[关闭]
@cxm-2016 2016-09-19T09:57:55.000000Z 字数 1356 阅读 1769

Android:JS调用安卓方法

android js no


1,创建提供给JS调用的方法

  1. @android.webkit.JavascriptInterface
  2. fun showToast(name: String) {
  3. Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
  4. }

给方法声明@android.webkit.JavascriptInterface后表明该方法允许JS代码调用

2,在JS中调用方法

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
  5. <title>Js调用Android</title>
  6. </head>
  7. <body>
  8. <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
  9. </body>
  10. </html>

这里调用了上面提供的showToast方法

3,将对象传递个JS代码

  1. val settings = mmWebView.settings
  2. settings.javaScriptEnabled = true
  3. mmWebView.addJavascriptInterface(object, "myObj")

第一句取出WebView的设置对象,第二句允许执行JS代码,第三句发送方法所在的对象,并将方法命名为myObj

Demo

  1. class MiniBrowserActivity : AppCompatActivity() {
  2. val js = """
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
  7. <title>Js调用Android</title>
  8. </head>
  9. <body>
  10. <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
  11. </body>
  12. </html>
  13. """
  14. override fun onCreate(savedInstanceState: Bundle?) {
  15. super.onCreate(savedInstanceState)
  16. setContentView(R.layout.activity_mini_browser)
  17. val settings = mmWebView.settings
  18. settings.javaScriptEnabled = true
  19. mmWebView.addJavascriptInterface(this, "myObj")
  20. mmWebView.loadData(js, "text/html;charset=utf-8", "utf-8")
  21. }
  22. @android.webkit.JavascriptInterface
  23. fun showToast(name: String) {
  24. Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
  25. }
  26. }

最终效果截图

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注