2017-03-20 1 views
2

Je suis en train de guider mes utilisateurs à l'optimisation de la batterie activité et il semble fonctionner pour la plupart, sauf pour certains téléphones Samsung avec Android 6 où je reçois:android.content.ActivityNotFoundException « android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS »

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS } 

C'est ce que j'utilise pour le lancer:

Intent intent = new Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS"); 
startActivity(intent); 

Toute idée de ce que devrait lancer sur les téléphones?

Merci.

+1

Très probablement, il n'y a rien à lancer. Vous pouvez avoir plus de chance en n'utilisant pas ce littéral de chaîne, mais en faisant plutôt référence à 'Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS'. De cette façon, si Samsung a modifié à la fois l'application Settings * et * le littéral, vous pourriez avoir quelque chose qui fonctionne. – CommonsWare

+0

Ce champ est en fait un champ final statique, donc la constante de chaîne sera inline, qu'il s'agisse d'un littéral ou d'un accès à un champ. –

Répondre

0

Utilisez le code ci-dessous pour vérifier si votre application est déjà ignorée pour l'optimisation de la batterie et si oui, affichez une fenêtre contextuelle pour l'activer.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
      if (!pm.isIgnoringBatteryOptimizations(getPackageName())) { 

       Intent batterySaverIntent=new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, Uri.parse("package:"+getPackageName())); 
       startActivity(batterySaverIntent); 
      } 
     }