summaryrefslogtreecommitdiff
path: root/services/appwidget/java
diff options
context:
space:
mode:
author Sunny Goyal <sunnygoyal@google.com> 2017-01-01 19:42:45 -0800
committer Sunny Goyal <sunnygoyal@google.com> 2017-01-03 13:28:56 -0800
commit87a563e0707bb7e2be034c195e9827dfe3451cfd (patch)
treef2767172e5276c264363127615a09effe7c0a1c4 /services/appwidget/java
parent564e802a7ce1c429c11ad1f557c1abb40e87c396 (diff)
AppWidgetManager: direct add widget support.
Test: Manual test and all the unit tests: adb shell am instrument -e class com.android.server.pm.ShortcutManagerTest1 -w com.android.frameworks.servicestests ... to test9 adb shell am instrument -e class com.android.server.appwidget.AppWidgetServiceImplTest -w com.android.frameworks.servicestests Bug 32404406 Change-Id: Icd6d4cbd25d9cdf4508da725d95d6401cc3a46a7
Diffstat (limited to 'services/appwidget/java')
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 6404604ca097..87eb380de15e 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -48,6 +48,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
+import android.content.pm.ShortcutServiceInternal;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -1542,6 +1543,36 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
}
@Override
+ public boolean requestPinAppWidget(String callingPackage, ComponentName componentName,
+ IntentSender resultSender) {
+ final int callingUid = Binder.getCallingUid();
+ final int userId = UserHandle.getUserId(callingUid);
+
+ if (DEBUG) {
+ Slog.i(TAG, "requestPinAppWidget() " + userId);
+ }
+
+ final AppWidgetProviderInfo info;
+
+ synchronized (mLock) {
+ ensureGroupStateLoadedLocked(userId);
+
+ // Look for the widget associated with the caller.
+ Provider provider = lookupProviderLocked(new ProviderId(callingUid, componentName));
+ if (provider == null || provider.zombie) {
+ return false;
+ }
+ info = provider.info;
+ if ((info.widgetCategory & AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN) == 0) {
+ return false;
+ }
+ }
+
+ return LocalServices.getService(ShortcutServiceInternal.class)
+ .requestPinAppWidget(callingPackage, info, resultSender, userId);
+ }
+
+ @Override
public ParceledListSlice<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter,
int profileId) {
final int userId = UserHandle.getCallingUserId();