Android WebView中的JavaScript調(diào)用android方法

1.編寫MyObject類實(shí)現(xiàn)要被調(diào)用的android方法

public class MyObject {
    Context mcontext;
    //構(gòu)造函數(shù)傳入上下文
    public MyObject(Context c) {
        mcontext=c;
    }
    @JavascriptInterface
    public void showToast(String name){
        //Toast打印消息
        Toast.makeText(mcontext, name+",你好", Toast.LENGTH_LONG).show();
    }
    @JavascriptInterface
    public void showList(){
        //創(chuàng)建對(duì)話框
        new AlertDialog.Builder(mcontext)
        .setTitle("圖書列表")
        .setIcon(R.drawable.ic_launcher)
        .setItems(new String[]{"bk1","bk2","bk3","bk4"},null)
        .setPositiveButton("確定", null)
        .create()
        .show();
    }
}

2.編寫一個(gè)簡(jiǎn)單的html文件,嘗試通過JavaScript調(diào)用myObj中的方法

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS調(diào)用android</title>
</head>
<body>
<input type="button" value="hi"
 onclick="myObj.showToast('ywwuyi');">
<input type="button" value="list"
 onclick="myObj.showList();">
</body>
</html>

3.在MainActivity中,通過將webSettings設(shè)置為允許通過JavaScript調(diào)用android方法,并為WebView添加JavaScript接口,將myObj指向MyObject類

@SuppressLint("JavascriptInterface")
public class MainActivity extends Activity {
    WebView view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view=(WebView)findViewById(R.id.show);
        view.loadUrl("file:///android_asset/test.html");
        //通過將webSettings設(shè)置為允許通過JavaScript調(diào)用android方法
        WebSettings webSettings=view.getSettings();
        webSettings.setJavaScriptEnabled(true);
        //為WebView添加JavaScript接口,將myObj指向MyObject類
        view.addJavascriptInterface(new MyObject(this), "myObj");
    }
}

運(yùn)行程序,單擊屏幕上的hi按鈕或list按鈕,將通過JavaScript調(diào)用MyObject中的android方法,打印消息或彈出對(duì)話框

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容