Android深层链接

时间:2014-09-23 15:37:11

标签: android html web deep-linking

我正在尝试在Android上添加深层链接,因此在我的网页中我替换了像这样的iframe

<iframe  scrolling="no" width="1" height="1" style="display: none;" 
src="myscheme://post/5002"></iframe>

和我的manifest.xml(android app)

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"></action>

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:scheme="myscheme" />
        </intent-filter>
    </activity>
</application>

但是当我用chrome打开网页时,它没有显示“打开方式”对话框来选择我的应用

我使用此测试了android的深层链接,然后出现对话框

adb shell am start -W -a android.intent.action.VIEW  -d "myscheme://whatever" 

3 个答案:

答案 0 :(得分:2)

Chrome for Android版本25及更高版本的功能略有改变。通过设置iframe的src属性,无法再启动Android应用。你应该使用“intent:”语法来代替

intent:// host /#Intent; scheme = protocol; package = com.domain.apppackage; end

基于意图的URI的基本语法如下:

  

意图:     HOST / URI-path //可选主机
     #意图;
        包= [字符串];
        行动= [字符串];
        类别= [字符串];
        成分= [字符串];
        方案= [字符串];
     结束;

请查看此page

答案 1 :(得分:1)

使用最新版本的Chrome,iframe解决方案无效。正如阿纳斯所说,你需要创建一个带有&#34;意图:// ..:&#34;的链接。地址。用户还需要执行一些操作来打开链接。

为了解决这个问题,我创建了一个链接缩短工具。你可以在这里使用它: http://www.uppurl.com/

此工具负责根据用户浏览器创建适当的深层链接。我建议您使用它,因为它为您解决了很多工作,您甚至不需要修改或拥有服务器。

答案 2 :(得分:0)

不确定,但您可以尝试使用JavaScript而不是iframe:

location.href = "myscheme://post/5002"

另外,只是为了测试它是否正常工作,您可以尝试在intent-filter中设置数据元素的主机和路径:

<data android:scheme="myscheme"
                  android:host="post"
                  android:pathPrefix="502">