注:この例を実行する前に、最初によく準備、新しい名前でアプリ:資産ディレクトリが(参照を作成する方法がわからないことがありますhttps://blog.csdn.net/Biegral/article/details/47170037)
資産下のHTMLファイルのディレクトリをロードするためのストア
Baiduの関連WebViewの例を直接使用するにはを知るためにどこ、自分自身を説明します。
XMLレイアウトファイル:
<?XMLバージョン= " 1.0 "エンコード= " UTF-8 "?> <のLinearLayoutのxmlns:アンドロイド= " http://schemas.android.com/apk/res/android " アンドロイド:layout_width = " match_parent " アンドロイド:layout_height = " match_parent " アンドロイド:オリエンテーション = " 垂直" > < WebViewの アンドロイド:ID = " @ + ID / obd_webview " アンドロイド:layout_width = "match_parent " アンドロイド:layout_height = " 0dp " アンドロイド:layout_weight = " 1 " /> <TextViewのアンドロイド:ID = " @ + ID / obd_text " アンドロイド:layout_width = " match_parent " のandroid:layout_height = " wrap_content " アンドロイド:テキスト = "" / > </のLinearLayout>
HTMLコンテンツ:
<HTML> <HEAD> <メタHTTP-当量= " Content-Typeの"コンテンツ= " text / htmlの;のcharset = UTF-8 " > <スクリプトタイプ= " テキスト/ javascriptの" > 関数actionFromNative(){ のdocument.getElementById(" log_msg ").innerHTML + = " <BR \>ネイティブ调用了JS函数" 。 } 関数actionFromNativeWithParam(引数){ のdocument.getElementById(" log_msg " (" \>ネイティブ呼び出しJS機能を<brおよびパラメータ渡し:" + のArgを); } </ SCRIPT> </ head> <body> <P>のWebViewとJavascriptが相互作用</ P> <DIV> <ボタンのonClick = " window.web.actionFromJsは()" >ネイティブコードを呼び出すためにクリックし、</ボタン> </ div> A の<div> <ボタンのonClick = " window.web.actionFromJsWithParam( 'のJsから来る')"を呼び出すためにクリック>ネイティブコードとパスパラメータ</ボタン> </ div>の A <DIV ID = " log_msg ">印刷情報の呼び出し</ div> </ BODY> </ HTML>
ロジックアンドロイド:
パブリック クラスOBDCheckWebViewはAppCompatActivity {拡張 プライベートのWebView OBDmwebViewを。 民間のTextView OBDTextView。 @Override 保護された ボイドのonCreate(バンドルsavedInstanceState){ super.onCreate(savedInstanceState)。 setContentView(R.layout.activity_obdcheck_webview)。 OBDmwebView = この.findViewById(R.id.obd_webview)。 OBDmwebView.getSettings()setJavaScriptEnabled(真); // 启用Javascriptを OBDmwebView.loadUrl(" ファイル:///android_asset/web.html "); //ファイルのパスとファイル名ロード OBDmwebView.addJavascriptInterfaceを(これは、" ウェブ" ;) OBDTextViewは = この.findViewById(R.id.obd_text)を、 文字列[]データ = { " 20190606001 "、" FS301 "、" 13024 "、「広東省-A888 「」白「」2019年2月2日15時三十八分28秒「」338キロ」}; } // このメソッドは、パラメータをしました android.webkit.JavascriptInterface @ 公共 のボイドactionFromJs(){ runOnUiThread(新しい新しいRunnableを(){ @Override 公共 ボイドRUN(){ Toast.makeText(OBDCheckWebView。この、" ネイティブと呼ばれるJS機能" 、Toast.LENGTH_SHORT).SHOW( ); 文字列のテキスト = OBDTextView.getText()+ " \ネイティブと呼ばれるNJS機能" ; OBDTextView.setText(テキスト); } }); } // パラメータを渡す @ android.webkit.JavascriptInterface 公共 ボイドactionFromJsWithParam(最終文字列[] STR){ runOnUiThread(新しい新しいRunnableを(){ @Override 公共 ボイドRUN(){ Toast.makeText(OBDCheckWebView。この、" JSネイティブ関数呼び出し転送パラメータ:" + STR、Toast.LENGTH_SHORT ).SHOW(); 文字列のテキスト = OBDTextView.getText()+ " \ NJSネイティブ関数呼び出し転送パラメータ:" + STR; OBDTextView.setText(テキスト); } }); } }
示すように業績: