android webview H5开发若干问题之问题四:webview打开原生应用
2018-03-08 10:42
495 查看
webview打开原生应用,这种需求,相信都会遇到。我们在浏览器中可以直接跳转原生应用,比如
uc浏览器跳转原生百度app,这种实现,在webview中,如果没有经过处理,都会识别错误。webview不会识别除了http,https的其它schema。另外,要跳转的原生的app也要做处理让webview去跳转特定的schema,并携带host,导向原生app的指定activity。
废话不多说,上菜:
1、在配置文件中配置 data标签。指定schema 和host
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="jnicalljava" android:host="main"></data>
<category android:name="android.intent.category.BROWSABLE"></category>是必填。理解指定browsable. data标签就是 地址了,shema 和host 组成的 jnicalljava://main 访问路径,在h5使用中<a href="jnicalljava://main?source=androidandh5">jnicalljava</a> data标签设置对了,就会跳转到 JniCallJavaDemo的应用的MainActivity中。同时携带参数,source=androidandh5
intent直接获取shema,也可以直接获取Uri,获取Uri对象,就和获取http,https的Uri对象相似了。getQueryParameter获取参数。二:在WebView的Demo AndroidAndH5中<a href="jnicalljava://main?source=androidandh5">jnicalljava</a>这是html中的使用方式。
重写WebViewClient 拦截url,对url进行判断schema,然后进行schema方式跳转原生应用。
ok大功告成,两个app运行 在AndroidAndH5 中就可以点击加载的包含 jnicalljava 为内容的 a标签,就能跳转到JniCallJavaDemo 中的Activity 中。
另外如果要跳转的app没有安装,也可以进行判断schema跳转其它的h5 页面,从而进行处理app未安装的情况。本人没有写,自己有兴趣,可自行完成。
其实还是很简单的。
附:github:
AndroidAndH5:https://github.com/xiaoyunchengzhu/AndroidAndH5
JniCallJavaDemo:https://github.com/xiaoyunchengzhu/JniCallJavaDemo
JniCallJavaDemo是 Jni 中C层调用java 方法,java 调用C方法的一个小demo.
uc浏览器跳转原生百度app,这种实现,在webview中,如果没有经过处理,都会识别错误。webview不会识别除了http,https的其它schema。另外,要跳转的原生的app也要做处理让webview去跳转特定的schema,并携带host,导向原生app的指定activity。
废话不多说,上菜:
一:原生app端
例如在我的另一个demo JniCallJavaDemo中实现跳转指定的MainActivity 中。1、在配置文件中配置 data标签。指定schema 和host
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="jnicalljava" android:host="main"></data>
<category android:name="android.intent.category.BROWSABLE"></category>是必填。理解指定browsable. data标签就是 地址了,shema 和host 组成的 jnicalljava://main 访问路径,在h5使用中<a href="jnicalljava://main?source=androidandh5">jnicalljava</a> data标签设置对了,就会跳转到 JniCallJavaDemo的应用的MainActivity中。同时携带参数,source=androidandh5
2、在java 代码中处理跳来的地址和参数
intent直接获取shema,也可以直接获取Uri,获取Uri对象,就和获取http,https的Uri对象相似了。getQueryParameter获取参数。二:在WebView的Demo AndroidAndH5中<a href="jnicalljava://main?source=androidandh5">jnicalljava</a>这是html中的使用方式。
重写WebViewClient 拦截url,对url进行判断schema,然后进行schema方式跳转原生应用。
ok大功告成,两个app运行 在AndroidAndH5 中就可以点击加载的包含 jnicalljava 为内容的 a标签,就能跳转到JniCallJavaDemo 中的Activity 中。
另外如果要跳转的app没有安装,也可以进行判断schema跳转其它的h5 页面,从而进行处理app未安装的情况。本人没有写,自己有兴趣,可自行完成。
其实还是很简单的。
附:github:
AndroidAndH5:https://github.com/xiaoyunchengzhu/AndroidAndH5
JniCallJavaDemo:https://github.com/xiaoyunchengzhu/JniCallJavaDemo
JniCallJavaDemo是 Jni 中C层调用java 方法,java 调用C方法的一个小demo.
相关文章推荐
- android原生WebView打开h5页面加载显示不完整错乱问题
- android webview H5开发若干问题之问题二:cookie问题
- Android开发之如何在WebView中点击链接使用自身打开(解决出现的选择使用第三方应用的问题)
- android webview H5开发若干问题之问题三:android和js交互问题
- Android中WebView,打开第三方应用的问题
- 让Android的webview支持H5的图片上传,无需原生开发功能
- android h5 js 混合开发解决webview加载白屏,不加载网页的问题(硬件加速网页渲染,优化体验)
- Android原生webView加载h5页面出现加载错乱不完全问题
- Android中WebView,打开第三方应用的问题
- Android中WebView,打开第三方应用的问题
- Android中WebView,打开第三方应用的问题
- android开发步步为营之44:使用WebView打开web页面
- Android WebView开发问题及优化汇总
- Android WebView开发问题及优化汇总
- Android WebView开发问题及优化汇总
- 【Android 应用开发】Android中使用ViewPager制作广告栏效果 - 解决ViewPager占满全屏页面适配问题
- Android应用开发中webview上传文件的几种思路
- Android WebView开发问题及优化汇总
- android开发中webview保存cookie问题的解决
- Android应用开发之(WebView中loadData与loadDataWithBaseURL的使用上的区别)