您的位置:首页 > 移动开发 > Android开发

android webview H5开发若干问题之问题四:webview打开原生应用

2018-03-08 10:42 495 查看
webview打开原生应用,这种需求,相信都会遇到。我们在浏览器中可以直接跳转原生应用,比如
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: