通過js調用android原生方法

來源:互聯網
上載者:User

標籤:

有時候我們有這樣一個需求,監聽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哆來咪

通過js調用android原生方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.