vous utilisez probablement cette autorisation:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Après cela, vous pouvez mettre en œuvre un BroadcastReceiver:
public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}
Et il suffit d'ajouter la classe à votre fichier manifeste:
<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>
Pour vérifier directement, si vous disposez des autorisations Autostart, utilisez ceci:
int p = ContextCompat.checkSelfPermission(Activity.this, Manifest.permission.RECEIVE_BOOT_COMPLETED);
if (p == PackageManager.PERMISSION_GRANTED) {
//Yay, you have the receive boot completed (= Autostart) permission!
}
j'avais essayé d'utiliser « ContextCompat.checkSelfPermission (...) » et obtenir obtenir une liste des récepteurs, mais l'Etat n'a pas changé quand l'utilisateur a refusé les autorisations – Neo