根据Android文档(http://developer.android.com/guide/components/intents-filters.html):“另一方面,只要过滤器包含至少一个操作,未指定操作的Intent对象会自动通过测试。” 并且“Intent对象中的每个类别都必须与过滤器中的类别匹配。过滤器可以列出其他类别,但不能省略intent中的任何类别。”
我有一个声明过滤器声明如下:
<intent-filter>
<action android:name="my.custom.action" />
<category android:name="my.custom.category" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
根据上述规则,我希望使用以下代码返回此过滤器的父活动,但不是:
List<ResolveInfo> list = getPackageManager().queryIntentActivities(
new Intent().addCategory("my.custom.category"),
PackageManager.MATCH_DEFAULT_ONLY + PackageManager.GET_RESOLVED_FILTER);
如果没有指定任何操作,意图解析会返回上面过滤器的活动吗?
谢谢!
答案 0 :(得分:1)
在您的示例中,主要问题出在PackageManager.MATCH_DEFAULT_ONLY + PackageManager.GET_RESOLVED_FILTER
,您必须执行|
(“按位或”)才能使其正常工作。我的意思是你必须写一些像PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_RESOLVED_FILTER
这样的东西。
答案 1 :(得分:1)
将两个标志与&#39; +&#39;一起添加。标志很可能是问题所在。
setFlags(PackageManager.MATCH_DEFAULT_ONLY +
PackageManager.GET_RESOLVED_FILTER);
这是我这样做的方式:
setFlags(PackageManager.MATCH_DEFAULT_ONLY|
PackageManager.GET_RESOLVED_FILTER);