16

Jak podano w dokumentacji:Jak prawidłowo wystrzelić intencję ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS?

„Aplikacja posiadających pozwolenie REQUEST_IGNORE_BATTERY_OPTIMIZATIONS może wywołać okno dialogowe systemu, aby użytkownik mógł dodać aplikację do białej listy bezpośrednio, bez wchodzenia do ustawień Aplikacja wystrzeliwuje ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Zamiar. wyzwolić okno dialogowe. "

Czy ktoś może mi podać właściwy sposób na wystrzelenie tego zamiaru?

Odpowiedz

20
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); 

Aby uzyskać więcej informacji, patrz this answer.

+12

Ostrożnie z tym - moja aplikacja została właśnie zawieszona w Google Play bez uprzedzenia o wysłanie prośby o "REQUEST_IGNORE_BATTERY_OPTIMISATIONS", nawet Zwolnienie aplikacji z optymalizacji baterii ma kluczowe znaczenie dla mojej aplikacji i nie mogę używać GCM z przyczyn technicznych. –

+0

@EladNava Czy napisałeś do Google o tym problemie? – milosmns

+1

@milosmns Zrobiłem to i czekałem na ich odpowiedź. Moja aplikacja jest obecnie zawieszona i niedostępna, gdy czekam na jej werdykt. Wydaje mi się, że jestem pierwszą osobą, która napisała o zawieszeniu za żądanie "REQUEST_IGNORE_BATTERY_OPTIMISATIONS", z powodu ** całkowicie uzasadnionych ** przyczyn (mających istotne znaczenie dla technicznych problemów aplikacji + GCM). Są to 2 warunki wymienione w ich [docs] (https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases) w celu uzyskania pozwolenia. Aktualizacja nastąpi po podjęciu decyzji. –

1

Aby uniknąć zawieszenia ze sklepu Google Play, jej lepiej wziąć Użytkownika do akumulatora ustawienia optymalizacji, na ręczne dodawanie aplikacji do białej liście

Intent myIntent = new Intent(); 
myIntent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); 
startActivity(myIntent); 

Także to nie musi mieć

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

zezwolenie w pliku manifestu

+0

Bez pozwolenia startActivity() nie robi nic – KgaboL

Powiązane problemy