Android配置Scheme使用浏览器唤起APP的方式,以及不生效问题解决
16lz
2021-01-23
此文章已收入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 Schemea>
被唤起的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=value2scheme=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上最好的第三方浏览器有哪些不错的功能?
- Android超炫图片浏览器代码
- iPhone和Android智能手机浏览器判断分辨率问题
- Android WebView加载https页面不能正常显示资源问题
- 移动开发 - Android - 实现两个页面(Activity)的简单跳转(Intent
- Android跳转页面的基本方式
- Andorid 文件浏览器简易实现
- android 页面停几秒后跳转
- Android 仿微信之(二)--主页面实现篇