Android中的深层链接 - Chrome无法启动#intent链接

时间:2016-04-19 12:39:53

标签: android google-chrome android-intent deep-linking

我一直在尝试使用从我拥有的网站到我的应用内的资源的深层链接。我一直在阅读有关Android中深度链接的事情如何演变的内容,尤其是Paul Kinlan's blog post,这似乎是关于事情应该如何运作的最新解释。

我也读过这个讨论,为什么custom scheme是一种不好的做法,不应该使用,这是有道理的。

现在我决定使用我网站上的#intent链接在用户点击链接时在应用中打开资源。为此,我使用了这样的链接:

intent:#Intent;package=com.example.project;component=com.example.project/.ui.ActivityWithResource;i.res_id=80;end

但是当我点击它时,没有任何反应,我在日志中看到了这一点:

chromium: [INFO:CONSOLE(0)] "Navigation is blocked: intent:#Intent;package=com.example.project;component=com.example.project/.ui.ActivityWithResource;i.res_id=80;end", source: http://example.com/?res_id=80 (0)

然后我在Chrome documentation上阅读了这个内容,有趣的是,他们的例子是使用自定义方案,与他们以前认为不应该做的相反!

现在,如果我将HTTP方案添加到我的意图链接,如下所示:

intent://example.com/?res_id=80#Intent;scheme=http;package=com.example.project;component=com.example.project/.ui.ActivityWithResource;end

然后它工作,因为活动有intent-filter来处理像http://example.com/这样的网址,但为什么当我指定组件时,它不起作用?

另外,当我在我的意图中使用HTTP方案时,在显示活动解析器(除了android 6.0,因为我使用自动验证),但我假设如果我可以让我的显式意图链接工作,它应该直接打开应用程序中的资源,因为我已经在intent链接中定义了组件。正确?

也许唯一的方法就是使用自定义方案?

由于

P.S:这是我的AndroidManifest中的活动定义。我不确定它是否需要android:pathPrefix才能工作,所以我添加了两个intent-filters

<activity
    android:name=".ui.ActivityWithResource"
    android:label="@string/app_name"
    android:exported="true"
    android:screenOrientation="portrait">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="example.com" android:pathPrefix="/"/>
    </intent-filter>

    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="example.com"/>
    </intent-filter>
</activity>

0 个答案:

没有答案