android中通過kotlin使用WebView(二)


  本文記錄如何讓網頁中的JS代碼和APP進行交互,簡單的說就是如何在網頁中執行APP的代碼。下面以在網頁中執行代碼打開撥號鍵盤並輸入電話號碼為例介紹如何實現。
  一、設置WebView允許它執行js代碼。
  二、通過調用WebView的addJavascriptInterface添加一個對象給js使用,添加完畢后在js里面相當於給window對象增加了一個子對象,比如addJavascriptInterface(obj,"app"),那么在js里面我們就可以直接使用app.來訪問對象暴露給js的方法。
  三、不要忘記在清單文件里面給app添加撥打電話權限,<uses-permission android:name="android.permission.CALL_PHONE" />
  代碼非常簡單,就幾行代碼即可完成,注意不是完善的代碼。
  APP端:

 1 class MainActivity : AppCompatActivity() {
 2     class JsObject(var ctx: Context) {  //暴露給js的類
 3         @JavascriptInterface  //要想讓js訪問該類的方法,在方法上加個這,我也不知道是啥玩意
 4         fun call(n:String)
 5         {
 6             var intent=Intent(Intent.ACTION_DIAL).setData(Uri.parse("tel:" + n));
 7             startActivity(ctx,intent,null);
 8         }
 9     }
10     override fun onCreate(savedInstanceState: Bundle?) {
11         super.onCreate(savedInstanceState)
12         var web:WebView= WebView(this)
13         setContentView(web)
14         web.webViewClient=WebViewClient()
15         web.settings.setJavaScriptEnabled(true);//設置WebView允許它執行js代碼
16         web.loadUrl("file:///android_asset/a.html")   //這個地方使用了本地資源
17         web.addJavascriptInterface(JsObject(this),"app")//暴露給js一個對象app,
18     }
19 }

  因為是學習不到2天,很多東西都一知半解,順便記錄下如何把資源打包到APP里面,點擊android studio 的file ->  new -> Folder -> Assets Folder 彈出對話框選擇一個路徑,默認即可,這時工程文件里就多了一個assets文件夾,我們把網頁文件a.html拷貝到這個文件夾里面在工程里它就自動出現了,我們就可以使用這個文件了,這個文件的路徑是file:///android_asset/+文件名。不知道有沒有別的辦法可以添加資源,也不知道assets文件名字能改不?
  a.html代碼

<html>
<head>
    <title>測試網頁</title>
</head>
<body>
hello
</body>
</html>
<script language="JavaScript">
    app.call("123456789");
</script>


免責聲明!

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



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