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

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值