我有这样的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的链接)
答案 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了解更多信息