Android意图过滤多个文件夹级别的路径模式

时间:2015-10-22 10:09:46

标签: android android-intent intentfilter deep-linking

我有这样的URI:http://myapp/category/details和3个应该处理这种结构的不同级别的活动 活动1应该处理http://myapp
活动2应该处理http://myapp/category
活动3应该处理http://myapp/category/details
我在找到数据标记的右路径/ pathPattern / pathPrefix的组合时遇到问题。在下面的示例中,所有3个活动都很乐意像这样http://myapp/category/details处理uri,并使用""完成动作。对话框显示3个myapp图标 活动1:

<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="myapp"
</intent-filter> 

活动2:

<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="myapp"
    android:pathPattern="/.*"
</intent-filter>  

活动3:

<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="myapp"
    android:pathPattern="/.*/.*"
</intent-filter> 

如何防止活动1处理用于活动2的链接&amp; 3?
(活动2处理活动3的链接)

1 个答案:

答案 0 :(得分:1)

您可以使用mime来区分意图

<data android...
 android:mimeType: "your specific mime for the intent...can be custom one like activity/activity1
>

然后使用mime运行您的特定Intent执行类似

的操作
intent.setType("mimeType/mimeSubType");
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

您也可以(并且应该)使用pathPrefix来区分路径。

查看data element了解更多信息