Adding callback for widget size changed, and potentially other extra info
Change-Id: I57738c92b6a0ba68ae66b19a533559470c64e6f1
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index b24823e..3b43b9b 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -113,6 +113,7 @@
int appWidgetId;
Provider provider;
RemoteViews views;
+ Bundle extras;
Host host;
}
@@ -760,6 +761,38 @@
}
}
+ public void updateAppWidgetExtras(int appWidgetId, Bundle extras) {
+ synchronized (mAppWidgetIds) {
+ ensureStateLoadedLocked();
+ AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
+
+ if (id == null) {
+ return;
+ }
+ Provider p = id.provider;
+ id.extras = extras;
+
+ // send the broacast saying that this appWidgetId has been deleted
+ Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_EXTRAS_CHANGED);
+ intent.setComponent(p.info.provider);
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id.appWidgetId);
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS, extras);
+ mContext.sendBroadcast(intent, mUserId);
+ }
+ }
+
+ public Bundle getAppWidgetExtras(int appWidgetId) {
+ synchronized (mAppWidgetIds) {
+ ensureStateLoadedLocked();
+ AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
+ if (id != null && id.extras != null) {
+ return id.extras;
+ } else {
+ return Bundle.EMPTY;
+ }
+ }
+ }
+
public void partiallyUpdateAppWidgetIds(int[] appWidgetIds, RemoteViews views) {
if (appWidgetIds == null) {
return;