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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM