From a41da04b2d3eb6d746bb357925ec5d4d2a72998c Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 29 Mar 2017 16:01:23 -0700 Subject: Add AppWidgetManager#getInstalledProvidersForPackage() This allows more fine-grained control than getting all installed providers for a user, when you might only want to check for a particular package. For instance, Launcher can use this API to surface widgets per app without having to ask for all the widgets. Test: Unit test on AppWidgetServiceImplTest $ runtest --path=services/tests/servicestests/src/com/android/server/appwidget/AppWidgetServiceImplTest.java Bug: 34940468 Change-Id: I182bf1c012d31182024422fc4a63f57f151c3ee5 --- .../java/com/android/server/appwidget/AppWidgetServiceImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'services/appwidget/java') diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 8aa37ef2d4eb..a5e56459eaf0 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -1633,7 +1633,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku @Override public ParceledListSlice getInstalledProvidersForProfile(int categoryFilter, - int profileId) { + int profileId, String packageName) { final int userId = UserHandle.getCallingUserId(); if (DEBUG) { @@ -1655,8 +1655,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku Provider provider = mProviders.get(i); AppWidgetProviderInfo info = provider.info; - // Ignore an invalid provider or one not matching the filter. - if (provider.zombie || (info.widgetCategory & categoryFilter) == 0) { + // Ignore an invalid provider, one not matching the filter, + // or one that isn't in the given package, if any. + boolean inPackage = packageName == null + || provider.id.componentName.getPackageName().equals(packageName); + if (provider.zombie || (info.widgetCategory & categoryFilter) == 0 || !inPackage) { continue; } -- cgit v1.2.3-59-g8ed1b