Voglio solo sapere quando viene caricata la pagina html. OnPageFinished viene chiamato prima che venga caricata tutta la pagina. Ho vista vuota quando ho impostato Vista da bitmap creato da WebViewonPageFinished sta sparando prima che venga caricata la pagina
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setAlwaysDrawnWithCacheEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view,String url){
Bitmap b = Bitmap.createBitmap(480, 240, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
view.draw(c);
mImageView.setImageBitmap(b);
//b.recycle();
}
});
EDIT:
Ho cercato di implementare JavaScriptInterface per ora solo con fare un messaggio Toast, ma ancora non funziona. Ho incollato il codice HTML e Java:
EDIT:
ho finalmente capito di lavoro. Ho usato JavaScriptInterface con corretto. Quando loadUrl è avviato, viene caricato il file html. Quando tutta la pagina è disponibile sullo schermo, funzione onload dalla funzione html call captureImage dalla classe JavaScriptInterface. Ora ho la certezza che quella pagina sia completamente caricata e posso riprenderne un'immagine. Grazie per tutto l'aiuto.
CODICE:
JAVA:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setDrawingCacheEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
mWebView.setWebViewClient(new WebViewClient(){});
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWebView.loadUrl("file:///android_asset/html_sample.html");
//mWebView.loadUrl("https://www.onet.pl");
}
});
public class JavaScriptInterface {
private Context mContext;;
public JavaScriptInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void captureImage(){
Bitmap b = mWebView.getDrawingCache(true);
mImageView.setImageBitmap(b);
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
HTML:
<html>
<head>
<title>My first styled page</title>
<link rel="stylesheet" href="sample_css.css">
</head>
<body onload="function(){ Android.captureImage() }">
...
</body>
</html>
Puoi approfondire ciò che stai cercando di fare? A quale livello di API stai mirando? L'HTML contiene iframe? ecc. Iniziando ~ API-12 le modifiche interne a WebView iniziarono a rompere cose come WebView.PictureListener ... –