【问题标题】:Implement deep linking in android from single activity从单个活动在 android 中实现深度链接
【发布时间】:2013-12-31 21:24:39
【问题描述】:

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

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

但我仍然感到困惑,如果我想接收有关启动器活动的传入数据,并且如果可以根据对传入 url 的一些内部解析来控制并启动相关活动/片段。

【问题讨论】:

    标签: android indexing deep-linking


    【解决方案1】:

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

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

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

            <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】:

    将以下意图过滤器添加到要通过 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>
    

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

    【讨论】:

      【解决方案3】:

      您必须在单独的&lt;intent-filter&gt; 标记中声明操作、类别和数据,而不是与启动器规范在同一个标​​记中。

       <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>
      

      【讨论】:

      • 使用这种方法,我的启动器活动会打开两次
      最近更新 更多