谁收到这个意图(没有接收者注册)

时间:2016-04-13 19:36:49

标签: android android-intent

我正在挖掘一个应用程序并试图找出,谁收到了意图。

我基本上有类似以下内容(代码在活动中执行)

Intent intent = new Intent("me.package.ACTION", "content://me.package/settings");
PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT).send();

现在的问题是,"me.package.ACTION"字符串从不用于将某些内容注册为接收者。它仅用于构建新的Intent或Context.sendBroadcast()。 此外,receiver中没有AndroidManifest.xml标记,可以采用此意图。

那么如何才能找到意图将被处理的位置?

AFAIK无法创建全能BroadcastReceiver / IntentFilter

PS:该应用程序需要一个HTC ROM并在Lollipop下运行。

编辑:是否有可能在另一个apk中收到了意图? 如果是这样,我怎样才能确定哪个apk收到了Intent?

1 个答案:

答案 0 :(得分:0)

您可以使用PackageManager.queryBroadcastReceivers(Intent, flags)来确定,如下面的代码:

PackageManager packageManager = getPackageManager();
List<String> results = new ArrayList<String>();
Intent intent = new Intent(YourAction); //Put any action string you have in mind
//Or any Intent intent = new Intent(...) you think fits

List<ResolveInfo> activities = packageManager.queryBroadcastReceivers(intent, 0);
for (ResolveInfo resolveInfo : activities) {
    ActivityInfo activityInfo = resolveInfo.activityInfo;
    if (activityInfo != null) {
        results.add(activityInfo.name);
    }
}