2015-10-01 2 views
0

У меня есть приложение со следующим в проявленномустановки приложений через Android Studio начинается при загрузке, но не тогда, когда установлен как .apk

<receiver android:name="com.redacted.BroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"></action> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 



<activity android:name="com.redacted.activity.UserLaunch" android:label="@string/app_name" android:launchMode="standard" android:clearTaskOnLaunch="true" android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Если установить и запустить приложение через Android Studio, то перезагрузите телефон, после чего вызывается onReceive() BroadcastReceiver, что связано с изменением настроек подключения после загрузки.

Однако, если я создаю .apk, а затем устанавливаю его, то при перезагрузке устройства onReceive() не вызывается. (В onReceive есть Log.d(), который я ищу в logcat после загрузки, он появляется с первым способом установки, но не со вторым).

Почему это различие?

+0

Когда вы работаете в Android Studio, появляется ли действие? – CommonsWare

+0

Да, появляется действие, я обновил вопрос с помощью большей части манифеста – Gruntcakes

ответ

1

Приложения установлены в так называемом «остановленном состоянии». Требуется явный Intent запуск одного из компонентов приложения для выхода из состояния остановки. Обычно это запускает запуск. Пока в состоянии остановки, никакие зарегистрированные широковещательные приемники не будут работать.

Итак, когда вы запускаете из Android Studio, активность запуска запускает ваше приложение из состояния остановки, и все хорошо. Установка некоторыми другими способами потребует от вас запуска активности запуска, чтобы выйти из состояния остановки.

+0

Спасибо, но я не совсем понятен. Если я установлю через Android Studio, перезагрузите устройство. Разве это не перезагрузка, чтобы остановить все, что делало Android Studio и активность запуска? Особенно, если я сначала убью приложение перед перезагрузкой? – Gruntcakes

+0

Кроме того, у меня возникло впечатление, что после перезагрузки (или, скорее, из-за изменений связи, возникающих после перезагрузки), из ОС будет передаваться приемник вещания, что неверно? – Gruntcakes

+0

Извините еще один вопрос, изменилась ли ситуация, если его системное приложение в rom? – Gruntcakes