web-dev-qa-db-fra.com

Comment déclencher correctement l'intention ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS?

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?

30
A.Sanchez.SD
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.

42
Buddy

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

8
Jamil
    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);
1
Arunmani