Спасибо, что заглянули в это. Я пометил проблему, чтобы держать в курсе. Я использовал несколько установленных приложений, которые запускаются при загрузке без этого разрешения, так что это будет приятно видеть в принудительном порядке.

ибудь знает, почему мое приложение все еще получает трансляцию 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();
     }
    }
  }

Я пересмотрел это на эмуляторе и успешно воспроизвел «проблему» на Android 2.1, 2.2 и 2.3. Я получаю ANR (как и ожидалось), так как эмулятор не имеет базы данных, которую запрашивает мое приложение. Когда я удаляю все заявленные разрешения на использование от человека, если я получаю, я получаю ожидаемые ошибки отказа в разрешении при попытке использовать мое приложение. Тем не менее, я все еще получаю намерение ACTION_BOOT_COMPLETED, переданное при загрузке. Какие-либо предложения?

 CommonsWare08 янв. 2011 г., 20:09
«Я использую свой телефон с CyanogenMod для тестирования, но сомневаюсь, что это имеет значение», - не будьте так уверены. Всегда проверяйте подобные аномалии, по крайней мере, на эмуляторе со стандартным Android, чтобы убедиться, что это не что-то с этим ПЗУ. Это не удар по Cyanogen - я бы порекомендовал эту же рекомендацию, если у вас такие же симптомы на устройстве HTC или Motorola.
 capitalf09 янв. 2011 г., 20:34
@CommonsWare Я повторно рассмотрел это на эмуляторе и успешно воспроизвел «проблему» на Android 2.1, 2.2 и 2.3. Я получаю ANR, так как эмулятор не имеет базы данных, которую запрашивает мое приложение. Когда я удаляю все декларированные разрешения на использование из манифеста, я получаю соответствующие ошибки при попытке использовать мое приложение. Тем не менее, я все еще получаю намерение ACTION_BOOT_COMPLETED, переданное при загрузке.
 leppie08 февр. 2012 г., 17:43
Я могу подтвердить то же самое для Android 2.x. ICS, кажется, исправил это. (мое приложение перестало работать).
 capitalf08 янв. 2011 г., 22:53
@CommonsWare: правда. К сожалению, мое приложение использует функции, которые недоступны в эмуляторе. Я одолжу чье-то устройство, чтобы продолжить пытаться исключить мою текущую среду Спасибо за предложение.
 CommonsWare10 янв. 2011 г., 00:47
Я посмотрю на это когда-нибудь на этой неделе.

Ответы на вопрос(1)

Решение Вопроса

у на обычном оборудовании Nexus One и Nexus S. Я подалсообщение об ошибке в теме.

 capitalf16 янв. 2011 г., 18:28
Спасибо, что заглянули в это. Я пометил проблему, чтобы держать в курсе. Я использовал несколько установленных приложений, которые запускаются при загрузке без этого разрешения, так что это будет приятно видеть в принудительном порядке.

Ваш ответ на вопрос