1

以下代码返回一个空列表,而运行它的应用程序注册了这个特定的意图!?

pm.queryBroadcastReceivers(new Intent(Intent.PACKAGE_REPLACED), PackageManager.GET_INTENT_FILTERS | PackageManager.GET_DISABLED_COMPONENTS);

有没有办法为这种意图和其他类似意图检索所有接收者?

这种方法看起来很不可靠还是我做错了什么?

谢谢。

4

2 回答 2

2

经过大量研究,只有这里的源代码提供了一些见解:

当仅在意图中指定一个动作时,API 将过滤所有接受此类动作的接收者,而无需任何数据类型或方案。

事实证明,许多动作意图需要一个方案或数据类型,例如任何 PACKAGE_* 动作上的“包”方案。

所以意图需要指定“包”方案。

于 2013-03-13T03:54:55.723 回答
0

可以获取信息使用代码,例如

List<String> startupApps = new ArrayList<String>();
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED);
Uri uriInfo = Uri.parse("package://");
intent.setData(uriInfo);
final List<ResolveInfo> activities = packageManager
                .queryBroadcastReceivers(intent, 0);
for (ResolveInfo resolveInfo : activities) {
        ActivityInfo activityInfo = resolveInfo.activityInfo;
        if (activityInfo != null)
            startupApps.add(activityInfo.name);
}
于 2015-01-09T13:23:23.820 回答