È necessario aggiungere un ricevitore che avvia un servizio dopo un riavvio.
Nel vostro registro manifesto Boot Complete
<service android:name="com.meCorp.service.MeCorpServiceClass"/>
...
<receiver android:name="com.meCorp.receiver.MyRebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Nel ricevitore di boot, avviare un servizio.
public class MyRebootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, MeCorpServiceClass.class);
serviceIntent.putExtra("caller", "RebootReceiver");
context.startService(serviceIntent);
}
}
Ecco un esempio per una classe di servizio in esecuzione in background.
public class MeCorpServiceClass extends IntentService{
@Override
protected void onHandleIntent(Intent intent){
String intentType = intent.getExtras().getString("caller");
if(intentType == null) return;
if(intentType.Equals("RebootReceiver"))
//Do reboot stuff
//handle other types of callers, like a notification.
}
}
O Basta usare una terza parte come Urban AirShip, che gestisce tutto ciò che per voi.
So che la risposta di eSniff funzionerà. Ma l'altra app di cui sto parlando NON ha servizi in esecuzione e l'app stessa non è in esecuzione, tuttavia la notifica esiste ancora e toccandola lancia l'app. – miannelle2
hai risolto questo? Mi sto chiedendo allo stesso modo anche – bman