在单个活动中实现android中的深层链接

时间:2013-12-13 07:06:12

标签: android indexing deep-linking

虽然我已经浏览了谷歌上的相关文档以进行应用程序索引

https://developers.google.com/app-indexing/webmasters/details

但是仍然有困惑,如果我想接收关于启动器活动的传入数据并从那里接收If可以控制并启动相关活动/片段,具体取决于对传入URL的一些内部解析。

3 个答案:

答案 0 :(得分:6)

您必须在单独的<intent-filter>标记中声明操作,类别和数据,而不是与启动器规范相同的标记。

 <activity>
    <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"/>
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="your.domain.com"
            android:scheme="http" />
    </intent-filter>
</activity>

答案 1 :(得分:2)

我不太清楚我是否明白你的要求,所以如果我没有回答你的问题,请纠正我。

只有您将意图过滤器放入的活动(或活动)才会捕获意图并开始。因此,如果您只将意图过滤器放在一个活动中,则只会启动该活动,而不会启动任何其他活动。您可以在同一个活动中放置多个intent过滤器以捕获多个意图。您还可以使用网址的路径段向您的活动发送更多信息,并在您的活动中解析它。

将以下内容放在要启动的活动下的清单中(路径是可选的):

        <intent-filter>
            <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="www.yourwebsite.com" />
        </intent-filter>

使用http://www.yourwebsite.com/yourstring之类的网址打开该应用。

然后使用getIntent().getData()获取启动活动的uri。然后你可以解析uri来获得你的信息。

答案 2 :(得分:0)

将以下Intent过滤器添加到要通过Manifest中的深层链接打开的Activity。

                    

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

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

然后根据您在“活动”中获得的Intent数据,您也可以执行操作。