首页 > 编程语言 >Android与H5(JavaScript)之间的简单交互

Android与H5(JavaScript)之间的简单交互

时间:2023-03-12 11:03:07浏览次数:42  
标签:javascript String JavaScript mWebView H5 json Android public


Android响应Js的动作 

假设网页端要调用Android原生的方法:showToast();

1.做一个盆子接收消息(创建一个工具类,写一个方法(*带注解))

public class JavaScriptMethod {

//相当于一个匹配标识
public static final String JAVAINTERFACE = "javaInterface";
//上下文拿过来 方便后续操作
private Context mContext;
private WebView mWebView;

public JavaScriptMethod(Context context, WebView webView) {
mContext = context;
mWebView = webView;
}

//andorid4.2(包括android4.2)以上,如果不写该注解,js无法调用android方法
@JavascriptInterface
public void showToast(String json) {
Bean_JS bean = new Gson().fromJson(json, Bean_JS.class);
}
}

2.给你的WebView加个属性

// 支持JavaScript
mWebView.getSettings().setJavaScriptEnabled(true);

3.继续,把下面的这些粘贴到下面

//创建上面创建类的对象
JavaScriptMethod m = new JavaScriptMethod(getActivity(), mWebView);
//其实就是告诉js,我提供给哪个对象给你调用,这样js就可以调用对象里面的方法
//第二个参数就是该类中的字符串常量
mWebView.addJavascriptInterface(m, JavaScriptMethod.JAVAINTERFACE);

4. 好了Android做完前3步就结束了

把下面的代码写到H5端JS代码的事件(点击/滑动)中

//参数一般为json格式    
var json = {"name":"javascript"};
//javaInterface是上面所说的字符串映射对象
window.javaInterface.showToast(JSON.stringify(json));

Android调用Js的方法

假设Android要调用网页端的Js方法: Text()

if (Build.VERSION.SDK_INT < 18) {
mWebView.loadUrl("javascript:Text()");
} else {
mWebView.evaluateJavascript("javascript:Text()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//此处为 js 返回的结果
}
});
}
//假如方法有参数,int类型这么写:
int i= 0;
"javascript:Text("+i+")"
//假如方法有参数,String 类型这么写:!!切记参数前后 要拼单引号
String s= "啦啦啦";
"javascript:Text('"+s+"')"

标签:javascript,String,JavaScript,mWebView,H5,json,Android,public
From: https://blog.51cto.com/u_13520184/6115620

相关文章

  • Android资源文件特殊字符转义编码
    举个栗子啊,我今天用了@这个符号写了好多次都没写成功,原因出在哪里:"&#64;好友"这样就报红;"&#64;好友"这样就没事了 .所以呢以下的 某些编码不允许放在开头,到前......
  • Android透明状态栏和沉浸式的实现
    Android透明状态栏和沉浸式的实现1.什么是沉浸式根据百度百科上的定义,沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉。其真正含义并不是大家......
  • Android 控件模拟点击和事件转移
    直接上代码 想看的看一下吧 主要是每次用到都忘记这个方法名... 记录一下子//焦点转移mContentTv.setOnClickListener(newView.OnClickListener(){......
  • Android中点击按钮获取星级评分条的评分
    场景效果 注:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局,然后添......
  • Android 近期关注的文章和内容位运算符使用场
    App启动流程分析 ​​https://zhuanlan.zhihu.com/p/59801160​​ Application启动流程 ​​https://www.jianshu.com/p/14d54a76b16f​​Kotlin基础语法 ​​ https:......
  • h5移动端适配
    1.viewviewport缩放适配(()=>{letviewprot=document.querySelector('#viewport');//获取设备宽度letcurWidth=document.documentElement.clientWidth;......
  • Android native项目编译v7a时-Werror参数导致报错
    在GitHub上下载了一个demo,自己编译运行时,v8a的so是可以正常编译运行的,但是就是v7a的不能也一直报错,最后发现在Android.mk文件里去掉-Werror字段就可以了。于是上网了解了一......
  • 使用Unity3D在PC+Android端截图保存,再添加到数据库中
    前提:1.使用的工具为Unity2021+VS2019+mysql8.02.使用的支持包         3.Unity组件  代码usingUnityEngine;usingSy......
  • 在Android 实现SD卡热插拔机制时,需要注意的几个方面
      1,sd卡热插拔机制的实现需要软件和硬件同时配合才能实现。 2,在电路上,需要一根单独的检测pin脚,通过检测pin脚的高低电平来检测sd卡的插拔动作,并在dws中将其配置成上拉......
  • Android中获取IMEI码
    //getIMEI码StringIMEI=this.getSystemService(Context.TELEPHONY_SERVICE).getDeviceId();StringmyIMSI=android.os.SystemProperties.get(android.teleph......