Не требуется ли android.permission.RECEIVE_BOOT_COMPLETED? - PullRequest
4 голосов
/ 08 января 2011

Кто-нибудь знает, почему мое приложение все еще получает трансляцию 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, переданное при загрузке.Есть предложения?

1 Ответ

7 голосов
/ 16 января 2011

Это может показаться ошибкой в ​​Android. Я могу воспроизвести проблему на обычном оборудовании Nexus One и Nexus S. Я подал отчет об ошибке .

...