Merge pull request #1984 from MilosKozak/updated1976

Allow for Battery Optimization failing on some platforms
This commit is contained in:
Milos Kozak 2019-08-24 19:26:40 +02:00 committed by GitHub
commit 11264dff51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 7 deletions

View file

@ -3,6 +3,7 @@ package info.nightscout.androidaps.utils;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -29,6 +30,8 @@ public class AndroidPermission {
public static final int CASE_BATTERY = 0x4; public static final int CASE_BATTERY = 0x4;
public static final int CASE_PHONE_STATE = 0x5; public static final int CASE_PHONE_STATE = 0x5;
private static boolean permission_battery_optimization_failed = false;
@SuppressLint("BatteryLife") @SuppressLint("BatteryLife")
private static void askForPermission(Activity activity, String[] permission, Integer requestCode) { private static void askForPermission(Activity activity, String[] permission, Integer requestCode) {
boolean test = false; boolean test = false;
@ -45,10 +48,15 @@ public class AndroidPermission {
ActivityCompat.requestPermissions(activity, permission, requestCode); ActivityCompat.requestPermissions(activity, permission, requestCode);
} }
if (testBattery) { if (testBattery) {
Intent i = new Intent(); try {
i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); Intent i = new Intent();
i.setData(Uri.parse("package:" + activity.getPackageName())); i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
activity.startActivityForResult(i, CASE_BATTERY); i.setData(Uri.parse("package:" + activity.getPackageName()));
activity.startActivityForResult(i, CASE_BATTERY);
} catch (ActivityNotFoundException e) {
permission_battery_optimization_failed = true;
OKDialog.show(activity, MainApp.gs(R.string.permission), MainApp.gs(R.string.alert_dialog_permission_battery_optimization_failed), activity::recreate);
}
} }
} }
@ -60,9 +68,11 @@ public class AndroidPermission {
public static boolean permissionNotGranted(Context context, String permission) { public static boolean permissionNotGranted(Context context, String permission) {
boolean selfCheck = ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED; boolean selfCheck = ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
if (permission.equals(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)) { if (permission.equals(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)) {
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (!permission_battery_optimization_failed) {
String packageName = context.getPackageName(); PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
selfCheck = selfCheck && powerManager.isIgnoringBatteryOptimizations(packageName); String packageName = context.getPackageName();
selfCheck = selfCheck && powerManager.isIgnoringBatteryOptimizations(packageName);
}
} }
return !selfCheck; return !selfCheck;
} }

View file

@ -38,6 +38,7 @@
<string name="danar_bt_name_title">DanaR Bluetooth device</string> <string name="danar_bt_name_title">DanaR Bluetooth device</string>
<string name="ns_sync_use_absolute_title">Always use basal absolute values</string> <string name="ns_sync_use_absolute_title">Always use basal absolute values</string>
<string name="alert_dialog_storage_permission_text">Please reboot your phone or restart AndroidAPS from the System Settings \notherwise Android APS will not have logging (important to track and verify that the algorithms are working correctly)!</string> <string name="alert_dialog_storage_permission_text">Please reboot your phone or restart AndroidAPS from the System Settings \notherwise Android APS will not have logging (important to track and verify that the algorithms are working correctly)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">This device does not appear to support battery optimization whitelisting - you may experience performance issues.</string>
<string name="description_actions">Some buttons to quickly access common features</string> <string name="description_actions">Some buttons to quickly access common features</string>
<string name="description_careportal">Enter advanced log book entries.</string> <string name="description_careportal">Enter advanced log book entries.</string>