Androidは5分でWebViewとjsのインタラクションを簡単に教えてくれます

2186 ワード

背景:Android APIでは、htmlのレンダリングを実現するためにWebViewコンポーネントが提供されています.現在、HTML 5、CSS 3、jSに関する開発技術、およびデータ交換フォーマットjson/XMLがある.Web開発エンジニアのスキル.Androidへの過度な依存を減らすために、通常は原生のAndroid埋め込み部分のhtmlになります.
これによりjsデータのインタラクションが回避されない.
簡単なレイアウトを新規作成し、webviewコントロールが1つしかありません.


このwebViewを見つけて、ローカルのmainをアップロードします.html、main.htmlは、エンジニアリングファイルのassetsルートディレクトリに格納されます.
WebView webView = (WebView) findViewById(R.id.webView);
webView.addJavascriptInterface(newJSObject(context), "aikaifa");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);//   js
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
webView.loadUrl("file:///android_asset/main.html");
}
}, 500);
  • js呼び出しAndroidメソッド
  • 注意深いあなたは上にJSObject類があることに気づくべきで、間違いなく、これが入り口を開けて、フロントエンドjsは私たちのAndroidのこちらに書く方法を呼び出すことができます.その中の「aikaifa」は表示として理解でき、好きなように変更することができます.
    JSObjectというクラスを見てみましょう.
    public class JSObject {
     private Context context;
     public JSObject(Context context){
     this.context=context;
    }
    @JavascriptInterface
     public void goBack({
     Activity activity = (Activity) context;
     activity.finish();
     }
    }
    

    このクラスはgoBackメソッドを定義し,注入JSは呼び出すことができる.jsはgoBackというメソッドを呼び出したい場合.このaikaifa.goBack()はこのように呼び出せばよい.これでフロントエンドはAndroid側の方法を簡単に呼び出すことができます.
  • Android呼び出しJSメソッド
  • jsが私たちのメソッドを呼び出すことができる以上、私たちもjsメソッドを呼び出すことができます.
    たとえば、jsのgetNameメソッドを呼び出します.
    私たちはこのように書くことができます.
    public void getTestJS()
    {
       Timertimer = new Timer();
       final Handler handler = new Handler(){
       public void handleMessage(Message msg) {
           switch (msg.what) {
              case 1:
             webView.loadUrl("javascript:getName()");
             break;
        }
       super.handleMessage(msg);
      }
    };
       timer.schedule(new TimerTask() {
       public void run() {
                Message msg = new Message();
                msg.what = 1;
                 handler.sendMessage(msg);
           }
        }, 500, 500);
    }
    

    ここでgetNameメソッドはjsのメソッドの1つであり、必要な場所でgetTestJSメソッドを呼び出せばよい.これでWebViewとjsのインタラクションはほぼ完了します.