android webView 和js交互中需要注意的幾點

最近公司有個項目,是html5寫的移動應用,但是在android 手機上需要增加分享和導航的2個功能,即用戶點擊js中對應的圖標,android端要實現相應的功能,也就是js調用android本地方法。這些我就不多說了。網上搜索會有很多的demo。
但是就在我通過網上一些教程寫的代碼中發現,js調用本地方法並不能成功。

         //支持js
        mWebView.getSettings().setJavaScriptEnabled(true);
        //設置背景顏色 透明
        mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
        //設置本地調用對象及其接口 前面的是本地需要被調用的方法的對象,後面的是這個類的別名。js中會使用這個別名來調用本地方法。
        mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myTest");

後來通過摸索發現我的手機是api19的,網上有提示到api大於17 的我們需要做一些操作。

//api 大於17 需要加註解 不然會無效
 @JavascriptInterface
    public void localShareWX(String name) {
        Toast.makeText(mContxt, "微信分享成功", Toast.LENGTH_SHORT).show();
    }

另外有一個比較好的用來部署html 的軟件,叫everything ,通過打開
tools–>options–>HttpServer 把enable HttpServer 勾選上,然後設置一個不被佔用的端口。在瀏覽器中輸入 127.0.0.1加上對應的端口號,80就不用輸了。然後打開你寫好的html頁面,那麼這個就是你的html的url了。將手機和pc處於同意局域網,然後將127.0.0.1改成pc的ip:可通過ipconfig 查看。最後將此url輸入到你的webView中:

 //載入js
    mWebView.loadUrl("http://192.168.188.161/C%3A/Users/moram/Desktop/test.html");

這樣就可以模擬訪問了。

最後有一個你較好的webView開源項目。webViewBridge。具體地址如下:
https://github.com/alinz/react-native-webview-bridge

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章