Android配置Scheme使用浏览器唤起APP的方式,以及不生效问题解决

本文介绍了Android中通过Scheme实现浏览器唤起APP的功能,详细阐述了Scheme的作用,并针对遇到的唤起不生效问题进行分析。问题根源在于Scheme的大小写敏感性,解决方案是确保所有部分不使用大写字母。同时,鼓励读者交流讨论,提供技术支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章已收入Android偶遇杂症合集(持续更新)

1、Scheme的作用,浏览器唤起APP

常见在手机浏览器打开某个网站,会有个 App 内打开的按钮,点击直接打开APP且跳转到该详情页,用的基本都是Scheme。Scheme的基本使用如下:

<activity android:name=".MainActivity">
    <!-- 需要添加下面的intent-filter配置 -->
    <intent-filter>
        ...
        <data
            android:scheme="myscheme"
            android:host="myhost"
            android:port="1024"
            android:path="/main" />
    </intent-filter>
</activity>

在web页面添加一个点击事件跳转:

<a href="myscheme://myhost:1024/main?key1=value1&key2=value2">open app with Uri Scheme</a>

被唤起的MainActivity中,可以在onCreate(APP未打开)和onNewIntent(APP已打开)方法中拿到跳转的链接:

Intent intent = getIntent();
if (null != intent && null != intent.getData()) {
    Uri uri = intent.getData();
    Log.e(TAG, "uri=" +uri);
    String scheme = uri.getScheme();
    String host = uri.getHost();
    int port = uri.getPort();
    String path = uri.getPath();
    String key1 = uri.getQueryParameter("key1");
    String key2 = uri.getQueryParameter("key2");
    Log.e(TAG, "scheme=" + scheme + ",host=" + host
            + ",port=" + port + ",path=" + path
            + ",query=" + uri.getQuery()
            + ",key1=" + key1 + ",key2=" + key2);
}

打印消息如下:

uri=myscheme://myhost:1024/main?key1=value1&key2=value2
scheme=myscheme,host=myhost,port=1024,path=/main,query=key1=value1&key2=value2,key1=value1,key2=value2

2、遇到的不生效问题原因及解决办法

在应用中增加了Scheme,兴致勃勃启动浏览器按下核弹发射按钮,结果气氛逐渐尴尬。。。

问题出在哪呢?仔细比对了链接地址、AndroidManifest的配置,苍天啊,分明是一样的,令人崩溃!!!

然后一个偶然的机会,用了AS自带的Android模拟器里的web test APP开启这个链接,打开了一个新的页面,显示了设置的链接地址,问题的原因找到了!!!

我在web页面中设置的链接为MyScheme://MyHost,点开的页面显示的链接是myshceme://myhost,神奇的事情,搜索一下发现了一篇文章,这位前辈和我遇到了一样的情况,文章链接如下:

H5无法调起android app 的坑之 scheme 大小写

最终结果就是,Scheme链接千万别用大写字母,包括scheme、host、port、path。

完毕

今天的分享就到这里,文章多有不足,各位小伙伴有什么想法可以直接评论或是私信,要是对你有所帮助就给我一个赞吧,喜欢我的小伙伴可以关注我哦~

支持我的小伙伴们可以微信搜索“Android思维库”,或者微信扫描下方二维码,关注我的公众号,每天都会推送新知识~
在这里插入图片描述

根据引用\[1\]和引用\[2\]的内容,你可以尝试以下步骤来解决uniapp新的scheme不生效问题: 1. 在uniapp的项目中创建一个名为apple-app-site-association的文件,并确保没有后缀名。 2. 在文件中添加以下代码: ``` { "applinks": { "apps": \[\], "details": \[ { "appID": "7TFJY8WTJ9.com.cnt.shop", "paths": \[ "*" \] } \] } } ``` 3. 在uniapp的manifest.json文件中进行配置。在"ios"部分添加以下代码: ``` "ios": { "dSYMs": false, "capabilities": { "entitlements": { "com.apple.developer.associated-domains": \[ "applinks:www.aaaaaa.com" \] } }, "urlschemewhitelist": "alipays,alipay,safepay,weixin,wechat", "idfa": false }, ``` 4. 在sdkConfigs中的share和oauth部分,将"UniversalLinks"的值改为"www.aaaaaa.com",并确保微信开放平台申请的appid正确填写。 如果你仍然遇到uniapp新的scheme不生效问题,你可以尝试以下步骤: 1. 打开Android项目的AndroidManifest.xml文件。 2. 将应用入口activity中的android:scheme值改为你需要的UrlSchemes。 3. 如果你不确定是否安装了应用程序,你可以在唤起应用页面使用js代码请求该协议。如果在500ms内有应用程序能解析这个协议,那么就能打开该应用;如果超过500ms就跳转app下载页。\[3\] 希望这些步骤能帮助你解决问题。如果问题仍然存在,请提供更多详细信息以便我能够更好地帮助你。 #### 引用[.reference_title] - *1* *2* [uniApp 手动配置UniversalLink,手动配置ios通用链接,](https://blog.csdn.net/weixin_47756693/article/details/128662561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uni-app项目配置UrlSchemes在外部打开APP](https://blog.csdn.net/qq_42597536/article/details/115325856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值