AndroidWebView的Js对象注入,使用场景是怎样的?
答案:3 悬赏:70 手机版
解决时间 2021-03-05 16:52
- 提问者网友:龅牙恐龙妹
- 2021-03-05 02:32
AndroidWebView的Js对象注入,使用场景是怎样的?
最佳答案
- 五星知识达人网友:思契十里
- 2021-03-05 02:50
第一步:
mainfest.xml中加入网络权限
<uses-permission android:name="android.permission.INTERNET" />
第二步:
加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。
<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主题代码:
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();
}
}
mainfest.xml中加入网络权限
<uses-permission android:name="android.permission.INTERNET" />
第二步:
加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。
<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主题代码:
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();
}
}
全部回答
- 1楼网友:风格不统一
- 2021-03-05 04:22
很多时候要使用WebView来展示一个网页,现在很多应用为了做到服务端可控,很多结果页都是网页的,而不是本地实现,这样做有很多好处,比如界面的改变不需要重新发布新版本,直接在Server端修改就行了。用网页来展示界面,通常情况下都或多或少都与Java代码有交互,比如点击网页上面的一个按钮,需要知道这个按钮点击事件,或者要调用某个方法,让页面执行某种动作,为了实现这些交互,通常都是使用JS来实现,而WebView已经提供了这样的方法。
- 2楼网友:罪歌
- 2021-03-05 04:16
第一步:
mainfest.xml中加入网络权限
第二步:
加载本地写好的html文件(定义好js中提供给android调用的方法 funfromjs(),和android提供给js调用的对象接口fun1fromandroid(string name)),放在 assets目录下。
js中调用本地方法
<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>
第三步:
实现android工程与js交互的相关代码
android主题代码:
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();
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯