我正在挖掘一个应用程序并试图找出,谁收到了意图。
我基本上有类似以下内容(代码在活动中执行)
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?
答案 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);
}
}