Android webviewとH 5インタラクション
2131 ワード
1.WebViewロードページ
webviewはローカルとネットワークのページをロードすることができて、htmlのファイルの位置によって、異なる書き方があります.
通常、ウェブビューは、本アプリケーション内でページジャンプを実現するためにウェブchromeclientを再設定する.
また、本明細書のh 5とのインタラクションを実現するにはjsインタフェースの使用を許可する必要があり、実際の開発では、一般的にこの文を加える.
2.WebView呼び出しjsメソッド
jsメソッドを呼び出すには、jsを呼び出す戻り値のないメソッドの場合、loadメソッドを直接使用することができます.
戻り値メソッドを呼び出すにはevaluatjavascriptメソッドを呼び出す必要があります
jsコードは以下の通りです.
3.jsがAndroidメソッドを呼び出す
Androidでjavascriptinterfaceインタフェースと宣言を定義する必要がありますまずクラスとメソッドを追加し、javascriptinterface public class TestJavaScriptInterface{@JavascriptInterface private String testJavaScriptInterface(){return"hello javascript"} javascriptinterface h 5へのスイッチ を開く jsコードは以下の通りである:
webviewはローカルとネットワークのページをロードすることができて、htmlのファイルの位置によって、異なる書き方があります.
mWebView.loadUrl("www.baidu.com");
mWebView.loadUrl("file:///android_res/test.html");
通常、ウェブビューは、本アプリケーション内でページジャンプを実現するためにウェブchromeclientを再設定する.
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
});
また、本明細書のh 5とのインタラクションを実現するにはjsインタフェースの使用を許可する必要があり、実際の開発では、一般的にこの文を加える.
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
2.WebView呼び出しjsメソッド
jsメソッドを呼び出すには、jsを呼び出す戻り値のないメソッドの場合、loadメソッドを直接使用することができます.
mWebView.loadUrl("javascript:do()");
戻り値メソッドを呼び出すにはevaluatjavascriptメソッドを呼び出す必要があります
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback() {
@Override
public void onReceiveValue(String value) {
Toast.makeText(ViewPagerGalleryDemoActivity.this, "value = " + value, Toast.LENGTH_SHORT).show();
}
});
jsコードは以下の通りです.
function sum(a,b){
return a+b;
}
function do(){
document.getElementById("p").innerHTML="hello world";
}
3.jsがAndroidメソッドを呼び出す
Androidでjavascriptinterfaceインタフェースと宣言を定義する必要があります
mWebView.addJavascriptInterface(new TestJavaScriptInterface(), "android");
function s(){
// Java back()
var result =window.android.testJavaScriptInterface();
document.getElementById("p").innerHTML=result;
}