Кто-нибудь знает, почему мое приложение все еще получает трансляцию ACTION_BOOT_COMPLETED, даже если мое приложение не имеет разрешения android.permission.RECEIVE_BOOT_COMPLETED
в файле манифеста?Я думал, что это было необходимо, но у нескольких обучающих программ, которые я использовал, также не было этого.Некоторые сделали.Я использую свой телефон с CyanogenMod для тестирования, но сомневаюсь, что это имеет значение.LogCat показывает мой журнал "Уведомлено о загрузке" при каждой загрузке.См. Ниже для используемого кода.
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
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();
}
}
}
Я повторно рассмотрел это на эмуляторе и успешно воспроизвел «проблему» на Android2.1, 2.2 и 2.3.Я получаю ANR (как и ожидалось), так как эмулятор не имеет базы данных, которую запрашивает мое приложение.Когда я удаляю все заявленные разрешения на использование из манифеста, я получаю ожидаемые ошибки отказа в разрешении при попытке использовать мое приложение.Тем не менее, я все еще получаю намерение ACTION_BOOT_COMPLETED, переданное при загрузке.Есть предложения?