Мое приложение запускает службу, которая прекращается, когда устройство перезагружается или приложение переустанавливается (обновляется). Я добавил два широковещательных приемника, чтобы поймать эти события - BOOT_COMPLETED и ACTION_MY_PACKAGE_REPLACED.Android: широковещательная передача ACTION_MY_PACKAGE_REPLACED никогда не была получена
Приемник ACTION_MY_PACKAGE_REPLACED, похоже, не работает. Вот что у меня есть:
AndroidManifest.xml:
<receiver android:name=".RebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<receiver android:name=".ReInstallReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
RebootReceiver:
public class RebootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Logg.d("Reboot completed. Restarting service");
context.startService(new Intent(context, MyService.class));
}
}
ReInstallReceiver:
public class ReInstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Logg.d("App Upgraded or Reinstalled. Restarting service");
context.startService(new Intent(context, MyService.class));
}
}
Запуск minSdk = 16; Тестирование на Galaxy S3 под управлением KitKat. Проверка успешности, проверяя, работает ли моя служба в настройках/приложениях, что она делает при перезагрузке, но не переустанавливает.
Я принял во внимание примечания следующего содержания, в которых говорится, что в Android Studio 1.0+ манифестные слияния означают, что я не могу объединить два приемника в один класс. См ACTION_MY_PACKAGE_REPLACED not received и Android manifest merger fails for receivers with same name but different content
не может эмулировать это намерение с помощью команды adb на Android 7 Nougat, кажется, что теперь он находится в списке чувствительных намерений: «java.lang.SecurityException: Permission Denial: не разрешено отправлять br oadcast android.intent.action.MY_PACKAGE_REPLACED ". Отлично работает на Kit-Kat 4.4, хотя даже без команды adb он вызывает мою точку останова в приемнике каждый раз, когда я запускаю приложение в Android Studio –