2016-04-13 10 views
0

Ich bin grade durch eine App graben und versuche herauszufinden, wer eine Absicht erhält.Wer erhält diese Absicht (keine Empfänger registriert)

Ich habe im Grunde etwas ähnlich den folgenden (Code innerhalb einer Aktivität ausgeführt)

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

Das Problem ist jetzt, dass die "me.package.ACTION" Zeichenfolge nie etwas als Empfänger registrieren verwendet. Es wird nur zum Erstellen neuer Intents oder in Context.sendBroadcast() verwendet. Auch gibt es keine receiver Tag in der AndroidManifest.xml, die diese Absicht nimmt.

Wie kann ich herausfinden, wo die Absicht verarbeitet wird?

AFAIK Es ist nicht möglich, einen Catch-all BroadcastReceiver/IntentFilter zu erstellen.

PS: Die App benötigt einen htc ROM und läuft unter Lollipop.

Bearbeiten: Ist es möglich, dass die Absicht in einer anderen apk erhalten wird? Wenn ja, wie kann ich feststellen, welche Apk die Absicht erhält?

Antwort

0

können Sie PackageManager.queryBroadcastReceivers(Intent, flags) verwenden, die, um zu bestimmen, wie der folgenden Code:

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); 
    } 
} 
+0

Dies keinen Empfänger für mich zurückkehrten. Indem ich ein wenig durch meine Pakete geschaut habe und ein paar untersucht habe, habe ich festgestellt, dass der Intent von 'com.htc.checkinprovider' empfangen wird. Könnte das ein Grund sein, warum 'queryBroadcastReceivers' eine leere Liste zurückgibt oder habe ich irgendetwas anderes falsch gemacht? – Uroc327

+0

@ Uroc327 ist die Absicht Aktion in einem seiner Empfänger-Filter? – Pooya

+0

Nicht im Manifest. Der Filter wird nur mit 'Context.registerReceiver()' registriert. (Ich habe gerade gesehen, dass mein Kommentar ein wenig verwirrend ist.) "Könnte das ein Grund sein" meinte ich, "könnte die Tatsache, dass dies eine System-App ist, ein Grund sein") – Uroc327

Verwandte Themen