summaryrefslogtreecommitdiff
path: root/core/java/android/widget/RemoteViews.java
diff options
context:
space:
mode:
authorHui Yu <huiyu@google.com>2020-03-16 18:56:21 -0700
committerHui Yu <huiyu@google.com>2020-03-21 08:36:54 -0700
commit3dc45fbc57c664539e97bc3031337aeb9643a90e (patch)
tree2b5b2581eb96870bbcfdd77c381b2b75980331d0 /core/java/android/widget/RemoteViews.java
parent4846c5e3a95d4221f3667d62110a717dd9796d9b (diff)
Update AppOps & UsageStats when app widget tapped.
When the app widget on the launcher is tapped on: 1. Update AppOps. AppOps treats the underlying app as foreground so the app can get while-in-use permission. 2. Report a USER_INTERACTION event to UsageStats so UsageStats can update mLastTimeUsed and mLastTimeVisible of this package. Bug: 149043079 Test: manual test, tapped on a widget. Change-Id: Ic8c91190881cf5dcf89f0f72cfd410b0c2e86bf6
Diffstat (limited to 'core/java/android/widget/RemoteViews.java')
-rw-r--r--core/java/android/widget/RemoteViews.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 7f6c0d2077f1..4a27d3a0e71d 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -29,6 +29,7 @@ import android.app.Application;
import android.app.PendingIntent;
import android.app.RemoteInput;
import android.appwidget.AppWidgetHostView;
+import android.appwidget.AppWidgetManager;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.ContextWrapper;
@@ -4130,8 +4131,18 @@ public class RemoteViews implements Parcelable, Filter {
// The NEW_TASK flags are applied through the activity options and not as a part of
// the call to startIntentSender() to ensure that they are consistently applied to
// both mutable and immutable PendingIntents.
+ final IntentSender intentSender = pendingIntent.getIntentSender();
+ final int uid = intentSender.getCreatorUid();
+ final String packageName = intentSender.getCreatorPackage();
+ if (uid != -1 && packageName != null) {
+ final AppWidgetManager appWidgetManager =
+ context.getSystemService(AppWidgetManager.class);
+ if (appWidgetManager != null) {
+ appWidgetManager.noteAppWidgetTapped(uid, packageName);
+ }
+ }
context.startIntentSender(
- pendingIntent.getIntentSender(), options.first,
+ intentSender, options.first,
0, 0, 0, options.second.toBundle());
} catch (IntentSender.SendIntentException e) {
Log.e(LOG_TAG, "Cannot send pending intent: ", e);