Jeg prøvde å bruke eksempelkoden i denne lenken, men den virker utdatert og fungerte ikke. Så hvilke endringer må jeg gjøre og i hvilke filer for å få appen min til å starte automatisk når Android er ferdig med å starte opp?
Først trenger du tillatelsen i AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
I AndroidManifest.xml
må du også definere tjenesten din og lytte etter handlingen BOOT_COMPLETED:
<service android:name=".MyService" android:label="My Service">
<intent-filter>
<action android:name="com.myapp.MyService" />
</intent-filter>
</service>
<receiver
android:name=".receiver.StartMyServiceAtBootReceiver"
android:label="StartMyServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Deretter må du definere mottakeren som skal motta handlingen BOOT_COMPLETED og starte tjenesten.
public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent serviceIntent = new Intent(context, MyService.class);
context.startService(serviceIntent);
}
}
}
Nå skal tjenesten kjøres når telefonen starter opp.
Lytt etter ACTION_BOOT_COMPLETE og gjør det du må derfra. Det finnes en kodebit her.
Oppdatering:
Opprinnelig lenke på svaret er nede, så basert på kommentarene, her er det lenket kode, fordi ingen noensinne vil savne koden når lenkene er nede.
I AndroidManifest.xml (applikasjonsdelen):
<receiver android:enabled="true" android:name=".BootUpReceiver"
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>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyActivity.class); //MyActivity can be anything which you want to start on bootup...
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
I tillegg kan du bruke en app som AutoStart hvis du ikke vil endre koden, for å starte en Android-applikasjon ved oppstart: AutoStart - Ingen root.