Ho un codice WebView molto simile sul mio progetto, ho solo sostituito gli URL che ci avete fornito.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_agreement);
WebView webView = (WebView) findViewById(R.id.userAgreementView);
final ProgressWheel progressWheel = (ProgressWheel) findViewById(R.id.progress_bar);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
//webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
Log.v("UA", webView.getSettings().getUserAgentString());
String url = getIntent().getStringExtra("data"); //Urls provided by other activity
if (url != null && !url.equals("")) {
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
//progress wheel fills here etc.
// ...
// ...
}
}
});
webView.loadUrl(url);
}
}
http://onlinelibrary.wiley.com/doi/10.1002/art.39115/pdf questo caricata come un fascino in WebView, senza difetti e nessun comportamento sbagliato.
Poi ho provato questo uno http://www.ajpmonline.org/article/S0749-3797(14)00628-X/fulltext, quando la webview completa il caricamento di una nuova attività nativa di Chrome si avvia immediatamente e carica la versione mobile della pagina in un'attività separata.
ho controllato il comportamento del sito web con il mio desktop Chrome, quando faccio una richiesta HTTP con una stringa user agent Android si scopre di fare le seguenti cose.
- ritorno codice di stato 302 e reindirizzare http://www.ajpmonline.org/action/mobileChoice?originalRequestUri=%2Farticle%2FS0749-3797%2814%2900628-X%2Ffulltext&userInterface=mobile
- impostare un cookie chiamato MobileUI e reindirizzare alla pagina originale con un codice di stato 302.
- Caricare la versione mobile della pagina a seconda del biscotto MobileUI. A quel punto il sito Web potrebbe eseguire un codice javascript per aprire una nuova finestra, il che spiega il comportamento del mio Galaxy S4 mini.
Quindi ho deciso di imitare la stringa dell'agente utente come browser desktop. Ho preso una stringa UA dal http://www.useragentstring.com/pages/Chrome/ e impostare in questo modo prima che il metodo loadURL e voilà!
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
Log.v("UA", webView.getSettings().getUserAgentString());
Questa può essere una delle ipotesi bordo e seconda l'URL che si sta caricando il comportamento può cambiare, ma si può costringere a caricare versione desktop dei siti web con un adeguato stringa user agent.
purtroppo non posso impostare il programma utente come un browser desktop, dal momento che io voglio le pagine mobili per caricare. Per quanto riguarda il primo link, mi rendo conto ora di avere un cookie di login impostato prima di provare l'URL.Il WebView ha solo problemi di caricamento quando accede al contenuto effettivo all'origine dell'URL, che non vedi perché non hai effettuato l'accesso. Fammi vedere se riesco a trovare un esempio migliore per quello. –
In questo caso è possibile modificare il contenuto della pagina Web che causa problemi. http://stackoverflow.com/a/8274881/3399234 quella risposta mostra come farlo, ma di sicuro questa non è una soluzione ragionevole ed efficiente. – Ugur
puoi provare con questo URL http://onlinelibrary.wiley.com/doi/10.1002/iid3.28/epdf –