collega WebView JavaScript lavoro sul contatto, ma non quando si utilizza trackball
Domanda
Ho una semplice attività WebView-based che segue il Ciao, WebView esempio per abilitare Javascript e il sovraccarico shouldOverrideUrlLoading()
.
Questa attività funziona alla grande quando l'utente tocca link sulla pagina web. Tuttavia, se l'utente utilizza la trackball e fa clic su un link, poi il caricamento della pagina risultante mostra una pagina con JavaScript disabilitato.
public class ViewUrl extends Activity {
protected WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_url);
final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";
view = (WebView) findViewById(R.id.widget1);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl( url );
view.setWebViewClient( new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
}
Il file view_url.xml è semplice:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/widget1" />
</RelativeLayout>
Di seguito sono riportati alcuni screenshot che mostrano sia il comportamento corretto e non corretto.
Clicca usando Touch (CORRETTO):
Clicca usando Touch (CORRETTO) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d .png
Fare clic con trackball (errato):
Tutte le idee come posso risolvere il comportamento trackball per essere lo stesso del comportamento contatto? O almeno consentire JS quando i collegamenti sono cliccato attraverso il trackball?
Soluzione
Sembra che l'esempio "Ciao, WebView" è rotto. Su suggerimento di qualcuno sul canale IRC, ho tolto l'override di shouldOverrideUrlLoading()
e tutto sembra funzionare a meraviglia.
il codice di lavoro Revised:
public class ViewUrl extends Activity {
protected WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_url);
final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";
view = (WebView) findViewById(R.id.widget1);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl( url );
view.setWebViewClient( new WebViewClient() ); // probably not necessary if you don't do anything else with the WebViewClient
}
}