summaryrefslogtreecommitdiff
path: root/services/appwidget
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2017-03-29 16:01:23 -0700
committerTony Wickham <twickham@google.com>2017-04-04 14:13:01 -0700
commita41da04b2d3eb6d746bb357925ec5d4d2a72998c (patch)
tree56f810e532d1609002846c01cc169fba37d90627 /services/appwidget
parentb7980a3bbee067eae4665c8abbe8d39aefb2d36a (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.java9
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;
}