Weiß jemand, warum meine Anwendung die ACTION_BOOT_COMPLETED-Übertragung auch dann empfängt, wenn meine App nicht die Berechtigung android.permission.RECEIVE_BOOT_COMPLETED
in der Manifestdatei hat? Ich dachte, es wäre erforderlich, aber ein paar Tutorials, die ich auch verwendet habe, hatten es nicht. Einige taten es. Ich benutze mein Telefon mit CyanogenMod zum Testen, aber ich bezweifle, dass das wichtig ist. LogCat zeigt bei jedem Start das Protokoll "Notified of boot" an. Siehe unten für den verwendeten Code.Ist android.permission.RECEIVE_BOOT_COMPLETED nicht erforderlich?
AndroidManifest.xml
<receiver android:name="AlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
AlarmReceiver Klasse
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG = "MyProgram";
@Override
public void onReceive(Context context, Intent intent) {
try {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Log.d(TAG, "Notified of boot");
}
Intent newIntent = new Intent(context, MyService.class);
context.startService(newIntent);
} catch (Exception e) {
Log.d(TAG, "An alarm was received but there was an error");
e.printStackTrace();
}
}
}
ich revisited diese auf dem Emulator und erfolgreich reproduziert das "Problem" auf Android 2.1, 2.2 und 2.3. Ich bekomme einen ANR (wie erwartet), da der Emulator nicht die Datenbank hat, die meine App abfragt. Wenn ich alle angegebenen Verwendungen-Berechtigungen aus dem Manifest entferne, erhalte ich die erwarteten Berechtigungsverweigerungsfehler, wenn ich versuche, meine App zu verwenden. Ich erhalte jedoch immer noch die ACTION_BOOT_COMPLETED-Absicht, die beim Booten übertragen wird. Irgendwelche Vorschläge?
"Ich benutze mein Telefon mit CyanogenMod zum Testen, aber ich bezweifle, dass das wichtig ist" - seien Sie nicht so sicher. Testen Sie Anomalien wie diese gegen mindestens einen Emulator mit Android-Betriebssystem, um zu bestätigen, dass es nichts mit dem ROM zu tun hat. Dies ist kein Schlag auf Cyanogen - ich würde die gleiche Empfehlung machen, wenn Sie die gleichen Symptome auf einem HTC oder Motorola-Gerät haben. – CommonsWare
@CommonsWare: Wahr. Leider verwendet meine App Funktionen, die im Emulator nicht verfügbar sind. Ich werde mir jemandes Gerät ausleihen, um weiterhin zu versuchen, meine aktuelle Umgebung auszuschließen. Danke für den Vorschlag. – capitalf
@CommonsWare Ich habe dies auf dem Emulator nochmals gelesen und das "Problem" auf Android 2.1, 2.2 und 2.3 erfolgreich reproduziert. Ich erhalte einen ANR, da der Emulator nicht über die Datenbank verfügt, die meine App abfragt. Wenn ich alle angegebenen Verwendungen-Berechtigungen aus dem Manifest entferne, erhalte ich die entsprechenden Fehler, wenn ich versuche, meine App zu verwenden. Ich erhalte jedoch immer noch die ACTION_BOOT_COMPLETED-Absicht, die beim Booten übertragen wird. – capitalf