From d9e5af3851f592a00549b689dec325dc46268606 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 28 Nov 2012 16:34:57 -0800 Subject: [PATCH] Making sure keyguard and homescreen only display eligible widgets (issue 7550090) Change-Id: I25acb7bde2e8e5ac3185a009f5c7151b81f0ae19 --- core/java/android/appwidget/AppWidgetManager.java | 13 ++++++++++++- .../internal/appwidget/IAppWidgetService.aidl | 2 +- .../java/com/android/server/AppWidgetService.java | 5 +++-- .../com/android/server/AppWidgetServiceImpl.java | 6 +----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 3dd640c151bc2..77315f9020480 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -544,8 +544,19 @@ public class AppWidgetManager { * Return a list of the AppWidget providers that are currently installed. */ public List getInstalledProviders() { + return getInstalledProviders(AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN); + } + + /** + * Return a list of the AppWidget providers that are currently installed. + * + * @param categoryFilter Will only return providers which register as any of the specified + * specified categories. See {@link AppWidgetProviderInfo#widgetCategory}. + * @hide + */ + public List getInstalledProviders(int categoryFilter) { try { - List providers = sService.getInstalledProviders(); + List providers = sService.getInstalledProviders(categoryFilter); for (AppWidgetProviderInfo info : providers) { // Converting complex to dp. info.minWidth = diff --git a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl index b63ad62c05888..e81d389846186 100644 --- a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl +++ b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl @@ -49,7 +49,7 @@ interface IAppWidgetService { void partiallyUpdateAppWidgetIds(in int[] appWidgetIds, in RemoteViews views); void updateAppWidgetProvider(in ComponentName provider, in RemoteViews views); void notifyAppWidgetViewDataChanged(in int[] appWidgetIds, int viewId); - List getInstalledProviders(); + List getInstalledProviders(int categoryFilter); AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId); boolean hasBindAppWidgetPermission(in String packageName); void setBindAppWidgetPermission(in String packageName, in boolean permission); diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java index 9590712a7d381..b94183cd40d92 100644 --- a/services/java/com/android/server/AppWidgetService.java +++ b/services/java/com/android/server/AppWidgetService.java @@ -281,8 +281,9 @@ class AppWidgetService extends IAppWidgetService.Stub } @Override - public List getInstalledProviders() throws RemoteException { - return getImplForUser(getCallingOrCurrentUserId()).getInstalledProviders(); + public List getInstalledProviders(int categoryFilter) + throws RemoteException { + return getImplForUser(getCallingOrCurrentUserId()).getInstalledProviders(categoryFilter); } @Override diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java index fe92b264fef83..9cacb3969172e 100644 --- a/services/java/com/android/server/AppWidgetServiceImpl.java +++ b/services/java/com/android/server/AppWidgetServiceImpl.java @@ -854,11 +854,7 @@ class AppWidgetServiceImpl { } } - public List getInstalledProviders() { - return getInstalledProviders(AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN); - } - - private List getInstalledProviders(int categoryFilter) { + public List getInstalledProviders(int categoryFilter) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); final int N = mInstalledProviders.size();