Android:JS调用安卓方法介绍
标签(空格分隔): android js
1,创建提供给JS调用的方法
@android.webkit.JavascriptInterface
fun showToast(name: String) {
Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
}
给方法声明@android.webkit.JavascriptInterface
后表明该方法允许JS代码调用
2,在JS中调用方法
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
<title>Js调用Android</title>
</head>
<body>
<input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
</body>
</html>
这里调用了上面提供的showToast
方法
3,将对象传递个JS代码
val settings = mmWebView.settings
settings.javaScriptEnabled = true
mmWebView.addJavascriptInterface(object, "myObj")
第一句取出WebView的设置对象,第二句允许执行JS代码,第三句发送方法所在的对象,并将方法命名为myObj
Demo
class MiniBrowserActivity : AppCompatActivity() {
val js = """
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content_Type" content="text/html;charset=utf-8"/>
<title>Js调用Android</title>
</head>
<body>
<input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"/>
</body>
</html>
"""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_mini_browser)
val settings = mmWebView.settings
settings.javaScriptEnabled = true
mmWebView.addJavascriptInterface(this, "myObj")
mmWebView.loadData(js, "text/html;charset=utf-8", "utf-8")
}
@android.webkit.JavascriptInterface
fun showToast(name: String) {
Toast.makeText(this, name, Toast.LENGTH_SHORT).show()
}
}