Webviewでjavaとjsが対話する

7479 ワード

WebViewは、AndroidアプリケーションでWebページを表示する強力な機能を提供しています.現在のHybird appの強力な発展の基礎でもある.Androidシステムの非常に重要なコンポーネントとして、HTMLの解析、レイアウト、描画の2つの強力な能力を提供しています.JavaScriptの解釈と実行.Hybird Appの構成はNative+H 5であり、Native部分はjava言語で実現される.JavaScriptはH 5の中で欠かせない部分です.そのためJavaとJavaScriptが互いに呼び出される場合があります!ここでは最も基本的な相互呼び出しの例を記録しました!
 
1.NativeレイアウトにWebViewコンポーネントを追加
1 <WebView
2         android:id="@+id/wv_contacts"
3         android:layout_below="@id/tv_title"
4         android:layout_width="match_parent"
5         android:layout_height="match_parent">
6 </WebView>

 
2.WebViewを初期化し、JavaScriptを使用してページをロードできるようにする
1   private void initWebView() {
2         mWebView = (WebView) findViewById(R.id.wv_contacts);
3         WebSettings settings = mWebView.getSettings();
4         settings.setJavaScriptEnabled(true);
5         mWebView.loadUrl("file:///android_asset/constacts.html");
6     }

 
3.java呼び出しjavaScript(mWebView.loadUrl(「javascript:method」)まずJavaScript関数を定義します.
1 function showData(constactsData){
2             var html="";
3             var ullist = document.getElementById("contacts_list");
4             var constactsJsonData = eval(constactsData);
5             for(var i = 0; i < constactsJsonData.length; i++){
6                 html += "<li onclick=callPhone(\"" + constactsJsonData[i].number + "\")>" + constactsJsonData[i].name + "</li>";
7             }
8             ullist.innerHTML = html;
9         }

JavaでJavaScriptを呼び出し、onPageFinishedコールバックで呼び出すのは、Jsが呼び出されたときにJsがすべてロードされたことを保証するためです.
 1 mWebView.setWebViewClient(new WebViewClient() {
 2             @Override
 3             public boolean shouldOverrideUrlLoading(WebView view, String url) {
 4                 view.loadUrl(url);
 5                 return true;
 6             }
 7 
 8             @Override
 9             public void onPageFinished(WebView view, String url) {
10                 super.onPageFinished(view, url);
11                 showContactsInfo();
12             }
13         });
14 
15 private void showContactsInfo() {
16         String info = jsInterface.readContacts();
17         mWebView.loadUrl("javascript:showData(" + info + ")");
18     }

 
4.JsでJava(mWebView.addJavascriptInterface(new JavaScriptInterface()、「interface」);)を呼び出します.コードに示すように、Java NativeメソッドがJsで呼び出されます.呼び出す必要があるメソッドが属するオブジェクトを別名に変換する必要があります.この別名をJavaScriptに透過し、JavaScriptでNativeメソッドに別名でアクセスします.
まず別名を追加
 1 mWebView.addJavascriptInterface(new JSInterface(this.getApplicationContext()), "jsinterface"); 次にNativeメソッドを定義します
1 public void callPhone(String number) {
2         Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
3         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
4         mContext.startActivity(intent);
5     }

最後に別名でJavaScriptで呼び出す 1 function callPhone(number){ 2 jsinterface.callPhone(number); 3 } 
 
Hybird Appで最も基本的なJavaとJavaScriptの通信機能が完成したら!