2016-06-10 14 views
4

Ich bin derzeit Debuggen einer Anwendung, die nach dem Start des Geräts automatisch gestartet werden sollte. Zu diesem Zweck habe ich eine BroadcastReceiver erstellt und es zu meiner AndroidManifest.xml:ADB-Shell: Wie bekomme ich eine Liste von BroadcastReceivers, die BOOT_COMPLETED Intent erhalten?

<receiver android:name=".receiver.StartupBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

Dies funktioniert die ganze Zeit auf den meisten Geräten. Auf einem Gerät (einer MXQ Pro-Set-Top-Box) funktioniert es jedoch nur die meiste Zeit. Bis jetzt konnte ich keine Muster finden, wenn es funktioniert und wenn es nicht funktioniert.

Also würde ich gerne herausfinden, welche BroadcastReceivers tatsächlich aktuell mit dem System registriert sind, um die BOOT_COMPLETED Intent zu erhalten.

spielte ich ein bisschen herum mit

  • pm: aber das sagt mir nur, welche Pakete möchte die Absicht
  • dumpsys erhalten: aber sein Ausgang ist überwältigend und ich weiß nicht, was zu suchen

Vielen Dank für jede Beratung!

+0

probiert 'dumpsys activity -h'? – pskink

+1

Ah, ja, ich habe mir die Dokumentation angeschaut. 'dumpsys activity b' schien vielversprechend, aber ich kann weder meinen Paketnamen noch den eigentlichen' BroadcastReceiver' finden, nicht einmal auf Geräten, auf denen alles funktioniert. Es gibt Hunderte von "ReceiverLists" mit jeweils einer eigenen ID, aber nichts stimmt mit der Ausgabe von zum Beispiel "dumpsys package my.package.name" überein. Daher das "überwältigende". –

+3

i laufen nur 'dumpsys Paket my.package.name' und bekam:' Receiver Resolver Tabelle: Nicht-Daten Aktionen: android.intent.action.BOOT_COMPLETED: 52b3eee0 my.package.name/.MyReceiver Filter 52b3ef68 Aktion : "android.intent.action.BOOT_COMPLETED" ' – pskink

Antwort

1

Wenn Sie müssen nur bestätigen, dass einige spezifische Empfänger richtig registriert wurde (das heißt interessieren Sie sich nur über Empfänger in einem spezifischen Paket, das Sie Namen kennen), dann benutzen Sie einfach dumpsys package my.package.name wie @pskink in den Kommentaren vorgeschlagen.

Aber wenn man in der Tat alle Empfänger systemweite wissen wollen einige spezifische Absicht Empfang - seit Android 7.0 Sie

adb shell cmd package query-receivers --brief -a android.intent.action.BOOT_COMPLETED 

Entfernen Sie den --brief Parameter verwenden, wenn Sie weitere Informationen wünschen. Und um nur die Namen aufzulisten:

adb shell cmd package query-receivers --components -a android.intent.action.BOOT_COMPLETED