summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2019-02-07 19:29:16 +0000
committerHyunyoung Song <hyunyoungs@google.com>2019-02-07 19:29:16 +0000
commit9ca02567ddcc04f33e2a95348b750151e0a334be (patch)
tree8d6214640d5b9b7bd3a4c1d33ab918e02d0d9059
parent8baf9214169362ff4afa5f16a5204138949a26a8 (diff)
downloadandroid_packages_apps_Trebuchet-9ca02567ddcc04f33e2a95348b750151e0a334be.tar.gz
android_packages_apps_Trebuchet-9ca02567ddcc04f33e2a95348b750151e0a334be.tar.bz2
android_packages_apps_Trebuchet-9ca02567ddcc04f33e2a95348b750151e0a334be.zip
Revert "Not using reflection for all limit API"
This reverts commit 8baf9214169362ff4afa5f16a5204138949a26a8. Reason for revert: Constant crash whenever entering recents view Change-Id: I695aa43686367379b3921a2665db490f6ac983a1
-rw-r--r--quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java46
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));
});
});
}