Comme indiqué dans la documentation:
"Une application détenant l'autorisation REQUEST_IGNORE_BATTERY_OPTIMIZATIONS peut déclencher une boîte de dialogue système pour permettre à l'utilisateur d'ajouter directement l'application à la liste blanche, sans accéder aux paramètres. L'application déclenche une intention ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS pour déclencher la boîte de dialogue."
Quelqu'un peut-il me dire la bonne façon de tirer cette intention?
Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
}
context.startActivity(intent);
Voir cette réponse pour plus d'informations.
Pour éviter la suspension de Google Play Store, il vaut mieux amener l'utilisateur aux paramètres d'optimisation de la batterie, pour ajouter manuellement une application à la liste blanche
Intent myIntent = new Intent();
myIntent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(myIntent);
Il n'a pas non plus besoin d'avoir
<uses-permission Android:name="Android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
autorisation dans le fichier manifeste
Intent myIntent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
myIntent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
myIntent.setData(Uri.parse("package:" + getActivity().getPackageName()));
}
startActivity(myIntent);