Supposons que je charge une URL 3ème partie via webview.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyWebChromeClient());
webview.loadUrl("http://ebay.com");
}
Est-il possible pour moi de injecter quelque chose dans ce Webview pour remplacer le logo eBay avec le mien?
Pour développer la réponse correcte de Commonsware:
WebView webview = new WebView();
webview.setWebViewClient(new WebClient());
webView.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("stackoverflow.com");
puis dans WebClient:
public class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
// Obvious next step is: document.forms[0].submit()
view.loadUrl("javascript:document.forms[0].q.value='[Android]'");
}
}
En bref, vous attendez que la page charge. Ensuite, vous loadurl ("JavaScript: [votre JavaScript ici]").
Pas directement. Vous pouvez invoquer le code JavaScript dans le contexte de la page Web actuelle, via loadUrl()
, un peu comme un bookmarklet. Cependant, vous n'avez pas accès direct au DOM de Java code.