summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorHui Yu <huiyu@google.com>2020-04-10 14:18:51 -0700
committerHui Yu <huiyu@google.com>2020-04-15 22:06:12 -0700
commit48032682297d848754ded3b157044bbc4e22db71 (patch)
tree7a708dcee8b4b6b761bace7cd89c2c17598439e5 /core/java/android
parent4d7fb0b4c24d1e3be98b824497edc207498a0a81 (diff)
Move noteAppWidgetTapped call into AppWidgetHostView.
RemoteViews is public API used out of scope of widget. The correct place to call noteAppWidgetTapped is in AppWidgetHostView. Fix: 153676411 Test: manual test, tap a widget, "adb shell dumpsys usagestats | grep USER_INTERACTION" to oberserve USER_INTERACTION event sent to UsageStas, "adb shell dumpsys appops | grep appWidgetVisible" to observer appWidgetVisible flag. Change-Id: Ic473211b91fd952dbb81b09b1e1568d6f69a0dd8
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/appwidget/AppWidgetHostView.java17
-rw-r--r--core/java/android/appwidget/AppWidgetManager.java8
-rw-r--r--core/java/android/widget/RemoteViews.java13
3 files changed, 19 insertions, 19 deletions
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index 09d56ec70e56..75ce0dcc1d1d 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -104,7 +104,7 @@ public class AppWidgetHostView extends FrameLayout {
*/
public AppWidgetHostView(Context context, OnClickHandler handler) {
this(context, android.R.anim.fade_in, android.R.anim.fade_out);
- mOnClickHandler = handler;
+ mOnClickHandler = getHandler(handler);
}
/**
@@ -131,7 +131,7 @@ public class AppWidgetHostView extends FrameLayout {
* @hide
*/
public void setOnClickHandler(OnClickHandler handler) {
- mOnClickHandler = handler;
+ mOnClickHandler = getHandler(handler);
}
/**
@@ -423,7 +423,6 @@ public class AppWidgetHostView extends FrameLayout {
// inflate any requested LayoutParams.
mRemoteContext = getRemoteContext();
int layoutId = remoteViews.getLayoutId();
-
// If our stale view has been prepared to match active, and the new
// layout matches, try recycling it
if (content == null && layoutId == mLayoutId) {
@@ -711,4 +710,16 @@ public class AppWidgetHostView extends FrameLayout {
}
return null;
}
+
+ private OnClickHandler getHandler(OnClickHandler handler) {
+ return (view, pendingIntent, response) -> {
+ AppWidgetManager.getInstance(mContext).noteAppWidgetTapped(mAppWidgetId);
+ if (handler != null) {
+ return handler.onClickHandler(view, pendingIntent, response);
+ } else {
+ return RemoteViews.startPendingIntent(view, pendingIntent,
+ response.getLaunchOptions(view));
+ }
+ };
+ }
}
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index 844128758d7c..009ec522e436 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -1243,13 +1243,13 @@ public class AppWidgetManager {
/**
* Note an app widget is tapped on.
- * @param uid App UID.
- * @param packageName App package name.
+ *
+ * @param appWidgetId App widget id.
* @hide
*/
- public void noteAppWidgetTapped(int uid, @NonNull String packageName) {
+ public void noteAppWidgetTapped(int appWidgetId) {
try {
- mService.noteAppWidgetTapped(uid, packageName);
+ mService.noteAppWidgetTapped(mPackageName, appWidgetId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 4a27d3a0e71d..7f6c0d2077f1 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -29,7 +29,6 @@ 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;
@@ -4131,18 +4130,8 @@ 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(
- intentSender, options.first,
+ pendingIntent.getIntentSender(), options.first,
0, 0, 0, options.second.toBundle());
} catch (IntentSender.SendIntentException e) {
Log.e(LOG_TAG, "Cannot send pending intent: ", e);