diff options
| author | Hui Yu <huiyu@google.com> | 2020-03-16 18:56:21 -0700 |
|---|---|---|
| committer | Hui Yu <huiyu@google.com> | 2020-03-21 08:36:54 -0700 |
| commit | 3dc45fbc57c664539e97bc3031337aeb9643a90e (patch) | |
| tree | 2b5b2581eb96870bbcfdd77c381b2b75980331d0 /core/java/android/widget/RemoteViews.java | |
| parent | 4846c5e3a95d4221f3667d62110a717dd9796d9b (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.java | 13 |
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); |
