diff options
author | Tony Wickham <twickham@google.com> | 2017-03-29 16:01:23 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2017-04-04 14:13:01 -0700 |
commit | a41da04b2d3eb6d746bb357925ec5d4d2a72998c (patch) | |
tree | 56f810e532d1609002846c01cc169fba37d90627 /services/appwidget | |
parent | b7980a3bbee067eae4665c8abbe8d39aefb2d36a (diff) |
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
Diffstat (limited to 'services/appwidget')
-rw-r--r-- | services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java | 9 |
1 files changed, 6 insertions, 3 deletions
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<AppWidgetProviderInfo> 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; } |