H5调用本地app
来源:互联网 发布:刷牙最佳时间知乎 编辑:程序博客网 时间:2024/05/23 19:15
首先既然H5和本地app达到交互,所以得有个标识,通过这个标识来开启app ,这时候就需要我们app端在manifest中的入口activity中添加scheme,也就是类似标识是的,这时候网页端可以通过这个scheme来开启我们的app,但是如果想要给我们app传递参数的话,那么就不好使了,所以这时候还需要 添加host,就可以了,代码如下
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="abcd" android:host="hello"/> </intent-filter>
这样就可以了,H5就可以打开我们的app了,当然既然人家给我们传递了参数,那么我们这边肯定要获取的吧,所以我们可以在入口activity中如下操作,来获取参数
Intent intent = getIntent(); Uri uri = intent.getData(); String scheme = intent.getScheme(); tv_web.setVisibility(View.GONE); idnoH = uri.getQueryParameter("idno"); System.out.println(idnoH+"idno");
这里的idno就是H5那么传递参数的key,通过key来获取value
当然常用的还有使用webview来和js交互,这就很简单了, 首先我们要先对webview进行一些设置, 第一条很关键,true表示和js可以交互, false反之
WebSettings set = mWebView.getSettings(); set.setJavaScriptEnabled(true);//设置是否直接javascript格式 set.setDefaultZoom(ZoomDensity.MEDIUM); //----设置缩放级别 set.setDefaultTextEncodingName("UTF-8");//---设置编码格式 set.setAllowContentAccess(true); set.setAppCacheEnabled(false); set.setBuiltInZoomControls(false); set.setUseWideViewPort(true); set.setUseWideViewPort(true); set.setLoadWithOverviewMode(true);
1. 先说下,js调用Android中的方法
//第一个参数是 供给js调用的类,第二个参数是js中要用到的调用这个类中的方法的对象,可以随便起
mWebView.addJavascriptInterface(new FromAndroid(context), "AndroidToJs");
说一下,这里的FromAndroid的这个类不能是内部类,不知为何,反正我先用的是内部类,是调不出来里面的方法,
/** * 这是js从android调用方法的类 * @author Administrator * */public class FromAndroid { Context context; public FromAndroid(Context context){ this.context = context; } @JavascriptInterface public void fromAndroid(String name){ MyToastUtils.show(context, name); }}
在JS中代码就更简单了
function showToast(){ AndroidToJs.fromAndroid("我是js调用android的吐司");}
完毕!!!
然后说下在Android中调用JS的方法
在Android中的代码其实很简单
//这是调用js中的方法 fragment7_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mWebView.loadUrl("javascript:fromJS('嘎嘎')"); }});
说明下, 这里fromJS()这个方法是JS中的方法名, 而里面的参数是android部分可以传给js的,然后就可以修改到网页中的内容,当然也可以不传,直接在js端写死了,android部分调用,直接显示就可以
在JS端的代码
function fromJS(param) { alert(param); document.getElementById('fromJS').innerHTML="我是android调用JS的方法"; showToast(); document.getElementById('fromJS').innerHTML=param;}
这里的fromJS的这个ID其实就是一个div,为了就是直接显示出来,还如上面说的一样,如果不用android传参数,直接fromJS()这个方法中param就不用写,直接一个无参的方法,然后JS端这边类似”我是android调用的JS方法” 这样,写死就好了; 如果想用android传参,并显示,直接把param赋值给div就好了
- H5调用本地app
- H5调用本地app
- 关于 h5页调用本地app
- 个人总结之H5调用本地app
- H5调用本地摄像头
- h5页面唤起本地APP
- Android WebView 微信和支付宝H5调用本地app支付
- app内h5页面调用app功能
- H5调用本地摄像头拍摄照片
- 通过页面调用APP【H5与APP互通】
- H5页面唤醒本地APP的处理方式
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- 基于h5的安卓app开启本地存储
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- iOS/Android 浏览器(h5)及微信中唤起本地APP
- 通过H5(浏览器/WebView/其他)唤起本地app
- MFC实现连连看四:滚动条的使用
- erlang中的record
- gdb调试多线程与多进程
- python小练习七——支持多用户在线的FTP程序
- 机器学习笔记--朴素贝叶斯法
- H5调用本地app
- IA32处理器任务切换过程 学习总结
- 4195: [Noi2015]程序自动分析
- hdu 1072 Nightmare(BFS+回头路)
- jsonp和xml格式生成与调用
- C、C++指针、数组和内存分配
- 需求:将指定目录(包含内容)复制到另一个目录中(利用字节流复制文本文件)
- 利用python and or,if else 简化代码
- php加密函数使用