Запуск приложения при загрузке завершен

Ниже приведен код, который я использую для запуска своего приложения при включении устройства.

public class BootReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("BootReceiver","intent received");

        Intent myIntent = new Intent(context, ACT_Home.class);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);
    }

}

и в манифесте (как <Application> дочерний):

<receiver android:name="host.alarmmanager.BootReceiver">
   <intent-filter >
      <action android:name="android.intent.action.BOOT_COMPLETED"/>
   </intent-filter>
</receiver>

Разрешения внутри манифеста следующие:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

Это отлично работает на Android 3.2.2, но если я попробую то же приложение на Android 4.0.3, приемник вещания ничего не получит. Также первая строка внутри метода onReceive не выполняется. Почему это происходит?


person GVillani82    schedule 18.09.2013    source источник


Ответы (3)


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

Это вы должны использовать в манифесте Android

person Lebedevsd    schedule 18.09.2013
comment
Но почему мое решение работает в Android 3.2.2 без добавления этого разрешения? - person GVillani82; 18.09.2013
comment
Точно не знаю, но если мы посмотрим процент версий андроида 3.x.x меньше 1%. Так что можно спокойно забыть об этом. - person Lebedevsd; 18.09.2013
comment
stackoverflow.com/ вопросы/4635353/ - person Selvin; 18.09.2013
comment
Хорошо @Seliv, я собираюсь попробовать - person GVillani82; 18.09.2013

Попробуйте это, хотя ваш код выглядит нормально! Следующее работает для меня.

    <!-- Receivers -->
    <receiver android:enabled="true" android:name="host.alarmmanager.BootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
person Lazy Ninja    schedule 18.09.2013
comment
stackoverflow.com/ вопросы/4635353/ - person Selvin; 18.09.2013
comment
@Joseph82 Джозеф82, поскольку он работает на некоторых устройствах, я предполагаю, что у вас было разрешение в вашем манифесте. - person Lazy Ninja; 18.09.2013

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

У Android, как ни странно, есть 2 разных разрешения.

1. Перезагрузка

2. При загрузке

Итак, сначала выключите телефон, а затем снова включите его через несколько секунд!

Надеюсь, поможет! (Я)

person Aliasgar Murtaza    schedule 02.12.2013