javascript - js 如何调用android
本文介绍了javascript - js 如何调用android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
项目内有单独的html文件
如何在该文件内用js来调取 原生的 android
这边自己写的代码如下
麻烦各位大佬指点下
MainActivity.java
protected void onCteate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
WebView wv;
wv = (WebView)findViewById(R.id.webView);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("file:///assets/apps/5yan/www/main-openDoor.html");
wv.addJavascriptInterface(new WebAppInterface(this), "Android");
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
js如下
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
html路径如图
解决方案
官方文档有介绍可以参考下:
https://developer.android.goo...;
在APP中暴露一个接口:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
添加到 WebView:
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
在 HTML 中调用:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
补充:
加载 Assets
文件应该使用 android_asset
,而不是 assets;
wv.loadUrl("file:///android_asset/{path}");
这篇关于javascript - js 如何调用android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文