diff options
Diffstat (limited to 'core/java/android/appwidget/AppWidgetHostView.java')
| -rw-r--r-- | core/java/android/appwidget/AppWidgetHostView.java | 17 |
1 files changed, 14 insertions, 3 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)); + } + }; + } } |
