问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

黑马培训有android webview js 交互内容吗

发布网友 发布时间:2022-04-22 06:31

我来回答

1个回答

热心网友 时间:2022-04-21 17:49

最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。
第一步:
mainfest.xml中加入网络权限

[java] view plain copy
<uses-permission android:name="android.permission.INTERNET" />
第二步:

加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。

[html] view plain copy
<body>
<a>js中调用本地方法</a>
<script>

function funFromjs(){
document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
}
var aTag = document.getElementsByTagName('a')[0];
aTag.addEventListener('click', function(){
//调用android本地方法
myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");
return false;
}, false);
</script>
<p></p>
<div id="helloweb">

</div>
</body>

第三步:

实现android工程与js交互的相关代码
android主题代码:

[java] view plain copy
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initViews();

//设置编码
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//设置背景颜色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//设置本地调用对象及其接口
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
//载入js
mWebView.loadUrl("file:///android_asset/test.html");

//点击调用js中方法
mBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:funFromjs()");
Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();
}
});

}
js调用的android对象方法定义

[java] view plain copy
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上注解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}

public void fun1FromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}

public void fun2(String name) {
Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show();
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华为手机删除qq聊天记录还能恢复吗 曙光英雄怎么登录以前的账号,曙光英雄曙光英雄客户端在哪里下载? 曙光英雄怎么注销账号 详细注销方法分享 曙光英雄怎么注销账号-账号注销方法介绍 六大茶类之青茶知识大科普 六大茶类香气类型之青茶(乌龙茶)茶香 六大茶类之青茶 简单认识六大茶类之青茶 一文带你全面认识六大茶类中的青茶,速来围观 识茶笔记:六大茶类之青茶篇 清蒸黄骨鱼怎么做 怎样实现android和javaweb数据交互 怎么才能把这个网址弄在手机桌面上? 黄刺鱼怎么熬汤才好吃 Android-webview和js脚本语言交互的时候怎么获取js... 在手机上,怎么把一个网站设置一个快捷方式到手机... 黄刺鱼怎么烧好吃 android js交互为什么进两次方法 怎么把网址放到手机桌面上 黄颡鱼汤怎么做才好吃 如何把某个网站发送到手机桌面,也就是添加到桌面... 黄颡鱼属一种常见的淡水鱼,制作黄颡鱼的时候需要... 安卓开发webview与js交互 手机网页如何设置到手机桌面 黄刺鱼怎么做好吃? android js 交互 能传json对象吗 黄颡鱼怎么做好吃又简单 Android调用js的问题 黄刺鱼怎么做最好吃 如何在手机桌面上创建一个网站的快捷方式 黄辣丁鱼的做法 android js 交互 传值除了数字传不了怎么解决js那... 黄颡鱼吃法 怎样做黄颡鱼比较好吃? webview判断 js是否有 交互对象 你有哪些做黄颡鱼的秘方? windows共享文件夹怎么使用 android webview js 交互可以调手机照片吗 黄颡鱼到底怎麼做好吃 安卓中js和webview交互必须传值吗 红烧黄刺鱼怎么做好吃 js和android交互为什么有弹窗显示参数 统帅热水器淋浴头怎么换 海尔统帅热水器安装费用价格表给个表 统帅热水器今年六月份安装了一台海尔统帅热水器 安... 买统帅热水器两三天还不给安装可以投诉吗 统帅电热水器没有排圬口怎么更换镁棒? 华为手机管家扫描出的推荐清理中的应用数据能清理吗? 华为手机怎样清理系统应用数据 儿童焦虑症较为常见,儿童焦虑症具体表现有哪些?