永发信息网

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();
}
}
全部回答
  • 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(); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯