2014-11-06 4 views
0

Я ожидал, что мое приложение загрузит BroadcastReceiver AutoStartOnBoot при перезагрузке моего устройства.Weird BOOT_COMPLETED поведение

  1. Я удаляю и устанавливаю приложение. Это означает, что все существующие настройки удалены. Затем я выключу телефон. И включите его, приемник Broadcast никогда не вызывается.
  2. Теперь я выключу устройство еще раз и снова включите его. Тем не менее, широковещательный приемник не вызывается.
  3. Теперь я запускаю приложение один раз. Очистить данные. И отключите его. Я включил его. Теперь вызывается широковещательный приемник.

Manifest

<receiver 
     android:name=".AutoStartOnBoot" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

Я имею настройку разрешений

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

http://stackoverflow.com/questions/11246326/how-to-receiving-broadcast-when-application-installed-or-removed –

ответ

1

Все ответы верны. Это поведение соответствует ожиданиям. Приложение неактивно при установке, пока оно не будет вручную запущено владельцем. Только после этого используется приемник вещания BOOT_COMPLETED, зарегистрированный в ОС.

Если мы не разместим приложение в системной папке, которая сохраняет все приложения в active состоянии. Мы являемся компанией-прибором, adb push your.apk /system/app возможно для нас.

Некоторые интересные ссылки, here и here

+2

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

+0

Я надеюсь, что ее более точная Теперь спасибо. – Siddharth

3

Edit:

Из ваших первых двух точек

1.I uninstall and install the app. Which means that all existing settings are deleted. I then power down the phone. And power it back up, the Broadcast receiver is never called. 
2.I now, power down the device one more time and power it up again. Yet, broadcast receiver is not called. 

Почему это не работает?

Здесь вы только что установили приложение, но не запустили. В андроиде после первого запуска зарегистрировано только все ваши данные манифеста и все ресиверы работают. Но в вашем третьем случае он работает, потому что вы запустили приложение, так что здесь все получатели регистрируются ,

Для получения дополнительной проверки здесь Broadcast Receiver not working immediately after package installation

Вы должны добавить это разрешение за пределами <application> тега в файле манифеста

вместо этого

<android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 

Добавить это как

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

меня есть, <использование -передача андроида: name = "android.permission.RECEIVE_BOOT_COMPLETED "/> – Siddharth

+0

@ Сиддхарт хорошо .. Что это за линии означает« когда я устанавливаю приложение в первый раз? », Он работает в следующий раз? –

+0

уточнил мой вопрос – Siddharth

1

Поведение, которое вы описываете, соответствует нормально нормальный. Что-то нужно использовать явным Intent, чтобы запустить один из ваших компонентов до того, как ваши зарегистрированные зарегистрированным приемником будут работать. Как правило, это будет пользователь, нажав на значок вашего стартового экрана.

См. the Android 3.1 release notes для получения более подробной информации.

+0

Я ничего не получил от загрузки ontis link. – Siddharth