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


    此文章已收入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。

  • 相关阅读:
    CSS知识点总结[部分]
    前端知识日常总结
    上传第三方jar包到nexus
    maven命令
    mac安装并配置nexus3.5.1版本
    前端解决跨域问题
    Package.json 属性说明
    nodejs日常总结
    log4j.properties总结
    Spring整合Hibernate
  • 原文地址:https://www.cnblogs.com/hwb04160011/p/13960578.html
Copyright © 2020-2023  润新知