2016-06-27 19 views
5

Sto testando un'applicazione in un Android 6 in cui ho bisogno di passare il DOZE, per questo voglio chiedere agli utenti di accettare l'igore di ottimizzazione della batteria.Modalità DOZE Dispositivo Samsung

Come nel progetto AntiDoze, ma quando corro in un dispositivo virtuale non ho alcun problema, ma quando passo per il Samsung ottengo:

FATAL EXCEPTION: main 
     Process: com.commonsware.android.antidoze, PID: 21135 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.commonsware.android.antidoze/com.commonsware.android.antidoze.EventDemoActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dat=package:com.commonsware.android.antidoze } 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
     at android.app.ActivityThread.access$1100(ActivityThread.java:221) 

Qualsiasi idea di come superare questo problema?

Il codice importante dal link è:

if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1) { 
    String pkg=getPackageName(); 
    PowerManager pm=getSystemService(PowerManager.class); 

    if (!pm.isIgnoringBatteryOptimizations(pkg)) { 
    Intent i= 
     new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) 
     .setData(Uri.parse("package:"+pkg)); 

    startActivity(i); 
    } 
} 

Nel manifesto ho

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> 
+0

Ho provato questo con un paio di emulatori diversi (API 23, 25 e 26) e sto ottenendo la stessa eccezione. – hamalaiv

risposta

4

Catch the ActivityNotFoundException e visualizzare i propri interfaccia utente per l'utente, chiedendo loro di andare alle impostazioni app e aggiungi la tua app alla whitelist di ottimizzazione della batteria. Sebbene i documenti non lo dicano espressamente per questa azione Intent, la maggior parte dei valori di Settings.ACTION_* menziona "In alcuni casi, un'attività di abbinamento potrebbe non esistere, quindi assicurati di salvaguardarla da questo".

+0

Qual è l'intento più vicino da utilizzare per l'ottimizzazione della batteria? C'è forse una soluzione migliore di andare semplicemente alle impostazioni del sistema operativo? –

+0

@androiddeveloper: non ne ho idea, mi dispiace. – CommonsWare

+0

ok grazie per aver risposto –

Problemi correlati