URL scheme启动Android应用,原生Android浏览器解析不正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URL scheme启动Android应用,原生Android浏览器解析不正确相关的知识,希望对你有一定的参考价值。

通过URL scheme启动android应用,类似<a href="myapp://"></a>
在uc、chrome下面都没有问题,但是在原生的Android浏览器上面,浏览器将“myapp://”解析成连接地址然后在浏览器打开

参考技术A 1、自定义URL Scheme:
创建一个activity并加上一个<intent-filter>(如果该activity是包含其他<intent-filter>,则需新建一个<intenf-filter>,不能在原有filter上添加),内容为:
<action android:name="android.intent.action.VIEW"/><!-- 若删除,使用startActivity启动android.content.ActivityNotFoundException,使用htmlViewer启动找不到网页-->
<category android:name="android.intent.category.BROWSABLE"/><!-- 若删除,使用startActivity启动ok,使用HTMLViewer启动找不到网页 -->
<category android:name="android.intent.category.DEFAULT"/><!-- 若删除,使用startActivity启动android.content.ActivityNotFoundException,使用HTMLViewer启动找不到网页-->

<data android:scheme="myapp"/><!-- scheme的值可自定义 -->
2、通过URL Scheme启动Android应用
方式一:通过代码访问:Intent intent = new Intent();

/**parse的参数值说明如下
* 只写myapp,启动android.content.ActivityNotFoundException
* 写myapp://12,成功
* 写myapp://da?sd=ad,成功
*/
intent.setData(Uri.parse("myapp://12"));
startActivity(intent);

方式二:通过网页访问:
/**href的值说明如下
* 只写myapp,找不到网页
* 写myapp://12,成功
* 写myapp://da?sd=ad,成功
*/

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>通过URL Scheme启动Android应用</title>
</head>
<body>
<form>
<a href="myapp://12">启动</a>
</form>
</body>

</html>
创建完成后发送到手机,再点击html选择使用HTMLViewer打开,再点击链接即可启动应用。
3、总结:第二种方式实现有点繁琐,最好的实现方式是直接在浏览器中输入url以启动应用。在网上搜索找到应如下操作:在浏览器的搜索栏输入如下url:content://com.android.htmlfileprovider/storage/emulated/0/myapp://12,经测试无法成功。不知道是哪里的问题,还请知道的指点一二。

利用Scheme 启动APP

参考技术A 苹果利用url的scheme在系统内部定位应用。so,我们可以为自己应用注册一个scheme供其他应用打开。

例如:现有两个APP,APP1,APP2,在APP1中打开APP2,其实只需以下步骤就可以实现这以简单功能,

identifier: 命名方式为反域名格式

scheme: 应用自身的scheme,供其他应用使用  

注:当系统内部应用的scheme相同时,后安装的应用会被打开,因为后安装的scheme会覆盖现在安装的应用的scheme

我们将identifier填入:com.21g.test    将schemes填入:APP2

例:

注:因为iOS 9限制了http的访问,所以要讲scheme加入白名单

当app2被其他应用打开的时候,会在APPDelegate中触发下列方法(iOS9.0以后):

当一个应用定义多个Scheme时,例如:

我们可以在代理方法中获取URL,根据url判断,处理不同的操作。

以上是关于URL scheme启动Android应用,原生Android浏览器解析不正确的主要内容,如果未能解决你的问题,请参考以下文章

Android页面跳转协议_URL Scheme详解

Android安全之Intent Scheme Url攻击

ios和android应用都可以注册自定义url scheme吗

自定义URL Scheme启动应用

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

转通过自定义的URL Scheme启动你的App