Стартирането на приложението при зареждане е завършено

Следва кодът, който използвам за стартиране на моето приложение, когато устройството е включено.

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
Не знам точно, но ако погледнем процента на Android версии 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, тъй като работи на някои устройства, предполагам, че сте имали разрешението във вашия манифест. - person Lazy Ninja; 18.09.2013

Уверете се, че не рестартирате телефона си, като изберете опцията за рестартиране от менюто за захранване.

Android странно има 2 различни разрешения.

1. Рестартирайте

2. При пълно зареждане

Така че, първо изключете телефона си и след няколко секунди го включете отново!

Дано помогне! (Y)

person Aliasgar Murtaza    schedule 02.12.2013