diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index 92151c0c58d..d641e7bef3c 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -25,6 +25,7 @@ import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.SystemClock; import android.text.format.Formatter; +import android.util.Log; import android.util.SparseIntArray; import androidx.annotation.NonNull; @@ -42,6 +43,7 @@ import com.android.settingslib.utils.PowerUtil; import com.android.settingslib.utils.StringUtil; public class BatteryInfo { + private static final String TAG = "BatteryInfo"; public CharSequence chargeLabel; public CharSequence remainingLabel; @@ -155,8 +157,15 @@ public class BatteryInfo { if (batteryUsageStats != null) { stats = batteryUsageStats; } else { - stats = context.getSystemService(BatteryStatsManager.class) - .getBatteryUsageStats(); + try { + stats = context.getSystemService(BatteryStatsManager.class) + .getBatteryUsageStats(); + } catch (RuntimeException e) { + Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e); + // Use default BatteryUsageStats. + stats = new BatteryUsageStats.Builder( + new String[0], /* includePowerModels */ false).build(); + } } return getBatteryInfo(context, stats, shortString); } diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java index 4a560402667..21d20235f65 100644 --- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java @@ -74,6 +74,14 @@ public class BatteryOptimizeUtils { } public void setAppUsageState(AppUsageState state) { + try { + setAppUsageStateInternal(state); + } catch (Exception e) { + Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e); + } + } + + private void setAppUsageStateInternal(AppUsageState state) { switch (state) { case RESTRICTED: mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED); diff --git a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java b/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java index d35ef82b818..2e3200d5835 100644 --- a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java +++ b/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java @@ -20,6 +20,7 @@ import android.content.Context; import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; +import android.util.Log; import com.android.settingslib.utils.AsyncLoaderCompat; @@ -27,6 +28,7 @@ import com.android.settingslib.utils.AsyncLoaderCompat; * Loader to get new {@link BatteryUsageStats} in the background */ public class BatteryUsageStatsLoader extends AsyncLoaderCompat { + private static final String TAG = "BatteryUsageStatsLoader"; private final BatteryStatsManager mBatteryStatsManager; private final boolean mIncludeBatteryHistory; @@ -42,7 +44,14 @@ public class BatteryUsageStatsLoader extends AsyncLoaderCompat