diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2019-02-07 20:15:49 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-02-07 20:15:49 +0000 |
commit | 91cdbe58a2ac602bc9a67dbbb652e9e31bed34c1 (patch) | |
tree | b07a84b9067848026fc6995394cc9db5953543cf | |
parent | fa8df691d12f99543bc760ae74a0e3f6125369b0 (diff) | |
parent | 9ca02567ddcc04f33e2a95348b750151e0a334be (diff) | |
download | android_packages_apps_Trebuchet-91cdbe58a2ac602bc9a67dbbb652e9e31bed34c1.tar.gz android_packages_apps_Trebuchet-91cdbe58a2ac602bc9a67dbbb652e9e31bed34c1.tar.bz2 android_packages_apps_Trebuchet-91cdbe58a2ac602bc9a67dbbb652e9e31bed34c1.zip |
Merge "Revert "Not using reflection for all limit API"" into ub-launcher3-master
-rw-r--r-- | quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java index 4e8bbe64c..bbcd4255c 100644 --- a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java +++ b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java @@ -23,7 +23,6 @@ import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.LauncherApps; -import android.content.pm.LauncherApps.AppUsageLimit; import android.content.res.Resources; import android.icu.text.MeasureFormat; import android.icu.text.MeasureFormat.FormatWidth; @@ -45,12 +44,12 @@ import com.android.launcher3.Utilities; import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.systemui.shared.recents.model.Task; +import java.lang.reflect.Method; import java.time.Duration; import java.util.Locale; public final class DigitalWellBeingToast extends LinearLayout { static final Intent OPEN_APP_USAGE_SETTINGS_TEMPLATE = new Intent(ACTION_APP_USAGE_SETTINGS); - private final LauncherApps mLauncherApps; public interface InitializeCallback { void call(float saturation, String contentDescription); @@ -67,7 +66,6 @@ public final class DigitalWellBeingToast extends LinearLayout { setLayoutDirection(Utilities.isRtl(getResources()) ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); setOnClickListener((view) -> openAppUsageSettings()); - mLauncherApps = context.getSystemService(LauncherApps.class); } @Override @@ -81,29 +79,47 @@ public final class DigitalWellBeingToast extends LinearLayout { public void initialize(Task task, InitializeCallback callback) { mTask = task; Utilities.THREAD_POOL_EXECUTOR.execute(() -> { - final AppUsageLimit usageLimit = mLauncherApps.getAppUsageLimit( - task.getTopComponent().getPackageName(), - UserHandle.of(task.key.userId)); + long appUsageLimitTimeMs = -1; + long appRemainingTimeMs = -1; + + try { + final Method getAppUsageLimit = LauncherApps.class.getMethod( + "getAppUsageLimit", + String.class, + UserHandle.class); + final Object usageLimit = getAppUsageLimit.invoke( + getContext().getSystemService(LauncherApps.class), + task.getTopComponent().getPackageName(), + UserHandle.of(task.key.userId)); + + if (usageLimit != null) { + final Class appUsageLimitClass = usageLimit.getClass(); + appUsageLimitTimeMs = (long) appUsageLimitClass.getMethod("getTotalUsageLimit"). + invoke(usageLimit); + appRemainingTimeMs = (long) appUsageLimitClass.getMethod("getUsageRemaining"). + invoke(usageLimit); + } + } catch (Exception e) { + // Do nothing + } - final long appUsageLimitTimeMs = - usageLimit != null ? usageLimit.getTotalUsageLimit() : -1; - final long appRemainingTimeMs = - usageLimit != null ? usageLimit.getUsageRemaining() : -1; + final long appUsageLimitTimeMsFinal = appUsageLimitTimeMs; + final long appRemainingTimeMsFinal = appRemainingTimeMs; post(() -> { - if (appUsageLimitTimeMs < 0) { + if (appUsageLimitTimeMsFinal < 0) { setVisibility(GONE); } else { setVisibility(VISIBLE); - mText.setText(getText(appRemainingTimeMs)); - mImage.setImageResource(appRemainingTimeMs > 0 ? + mText.setText(getText(appRemainingTimeMsFinal)); + mImage.setImageResource(appRemainingTimeMsFinal > 0 ? R.drawable.hourglass_top : R.drawable.hourglass_bottom); } callback.call( - appUsageLimitTimeMs >= 0 && appRemainingTimeMs <= 0 ? 0 : 1, + appUsageLimitTimeMsFinal >= 0 && appRemainingTimeMsFinal <= 0 ? 0 : 1, getContentDescriptionForTask( - task, appUsageLimitTimeMs, appRemainingTimeMs)); + task, appUsageLimitTimeMsFinal, appRemainingTimeMsFinal)); }); }); } |