Log in which Android standby bucket the app is in if running on Android 9+ device

This commit is contained in:
Sylvain Berfini 2019-03-18 15:30:19 +01:00
parent 9b43b3e248
commit 5f09435bbb
4 changed files with 46 additions and 0 deletions

View file

@ -1395,6 +1395,13 @@ public class LinphoneActivity extends LinphoneGenericActivity
"[Linphone Activity] Device has been restricted by user (Android 9+), push notifications won't work !"); "[Linphone Activity] Device has been restricted by user (Android 9+), push notifications won't work !");
} }
int bucket = DeviceUtils.getAppStandbyBucket(this);
if (bucket > 0) {
Log.w(
"[Linphone Activity] Device is in bucket "
+ Compatibility.getAppStandbyBucketNameFromValue(bucket));
}
IntentUtils.handleIntent(this, getIntent()); IntentUtils.handleIntent(this, getIntent());
} }

View file

@ -26,6 +26,7 @@ import android.app.ActivityManager;
import android.app.Notification; import android.app.Notification;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Person; import android.app.Person;
import android.app.usage.UsageStatsManager;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
@ -85,4 +86,24 @@ class ApiTwentyEightPlus {
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
return activityManager.isBackgroundRestricted(); return activityManager.isBackgroundRestricted();
} }
public static int getAppStandbyBucket(Context context) {
UsageStatsManager usageStatsManager =
(UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
return usageStatsManager.getAppStandbyBucket();
}
public static String getAppStandbyBucketNameFromValue(int bucket) {
switch (bucket) {
case UsageStatsManager.STANDBY_BUCKET_ACTIVE:
return "STANDBY_BUCKET_ACTIVE";
case UsageStatsManager.STANDBY_BUCKET_FREQUENT:
return "STANDBY_BUCKET_FREQUENT";
case UsageStatsManager.STANDBY_BUCKET_RARE:
return "STANDBY_BUCKET_RARE";
case UsageStatsManager.STANDBY_BUCKET_WORKING_SET:
return "STANDBY_BUCKET_WORKING_SET";
}
return null;
}
} }

View file

@ -210,4 +210,18 @@ public class Compatibility {
} }
return false; return false;
} }
public static int getAppStandbyBucket(Context context) {
if (Version.sdkAboveOrEqual(Version.API28_PIE_90)) {
return ApiTwentyEightPlus.getAppStandbyBucket(context);
}
return 0;
}
public static String getAppStandbyBucketNameFromValue(int bucket) {
if (Version.sdkAboveOrEqual(Version.API28_PIE_90)) {
return ApiTwentyEightPlus.getAppStandbyBucketNameFromValue(bucket);
}
return null;
}
} }

View file

@ -125,6 +125,10 @@ public class DeviceUtils {
return Compatibility.isAppUserRestricted(context); return Compatibility.isAppUserRestricted(context);
} }
public static int getAppStandbyBucket(Context context) {
return Compatibility.getAppStandbyBucket(context);
}
public static void displayDialogIfDeviceHasPowerManagerThatCouldPreventPushNotifications( public static void displayDialogIfDeviceHasPowerManagerThatCouldPreventPushNotifications(
final Context context) { final Context context) {
for (final Intent intent : POWERMANAGER_INTENTS) { for (final Intent intent : POWERMANAGER_INTENTS) {