通過js調用android原生方法


有時候我們有這樣一個需求,監聽html中控件的一些事件。例如點擊html中某個按鈕,跳轉到別的activity,復制某段文本。 
首先是對webview的設置:

myWebView = (WebView) findViewById(R.id.myWebView);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.addJavascriptInterface(new JavaScriptinterface(this),
                "android");
        myWebView.setWebViewClient(new myWebViewClient());

創建JavaScriptinterface類:

public class JavaScriptinterface {
    Context context;
    public JavaScriptinterface(Context c) {
        context= c;
    }

    /**
     * 與js交互時用到的方法,在js里直接調用的
     */
    @JavascriptInterface
    public void showToast(String ssss) {

        Toast.makeText(mContext, ssss, Toast.LENGTH_LONG).show();
    }
}

高版本中在允許被js調用的方法加上@JavascriptInterface注解 
然后使用webview的addJavascriptInterface添加這個類的對象,取一個名字。

<script type="text/javascript">   
function showToast() {       
    android.showToast("哈哈啊哈 ");
     }
</script>

</head>
<body>
<input type="button" value="調用"
     onClick="showToast()"/>
</body>

html代碼很簡單,在想調用原生方法的js方法中使用Android.shwoToast(“”)就可以成功調用原生方法。我們可以通過它來復制信息,獲取點擊事件等。(shwoToast是原生方法名,android是我們在addJavascriptInterface方法中自己定義的名字)。 

from:im哆來咪


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM