diff --git a/res/drawable-v24/ic_setup_shadow.xml b/res/drawable-v24/ic_info_shadow.xml similarity index 94% rename from res/drawable-v24/ic_setup_shadow.xml rename to res/drawable-v24/ic_info_shadow.xml index 10aeee6e02..1fe2c46b4b 100644 --- a/res/drawable-v24/ic_setup_shadow.xml +++ b/res/drawable-v24/ic_info_shadow.xml @@ -15,5 +15,5 @@ --> diff --git a/res/drawable/ic_setting.xml b/res/drawable/ic_setting.xml index 33cd6ce34a..08eba253dc 100644 --- a/res/drawable/ic_setting.xml +++ b/res/drawable/ic_setting.xml @@ -17,10 +17,9 @@ Copyright (C) 2016 The Android Open Source Project android:width="@dimen/options_menu_icon_size" android:height="@dimen/options_menu_icon_size" android:viewportWidth="48.0" - android:viewportHeight="48.0" - android:tint="?android:attr/textColorPrimary" > + android:viewportHeight="48.0"> + + + - - + diff --git a/res/values/drawables.xml b/res/values/drawables.xml index 1367174b1b..fea17b1530 100644 --- a/res/values/drawables.xml +++ b/res/values/drawables.xml @@ -14,7 +14,7 @@ limitations under the License. --> - @drawable/ic_setting + @drawable/ic_info_no_shadow @drawable/ic_remove_no_shadow @drawable/ic_uninstall_no_shadow \ No newline at end of file diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java index c86688020e..19ee0b8505 100644 --- a/src/com/android/launcher3/ButtonDropTarget.java +++ b/src/com/android/launcher3/ButtonDropTarget.java @@ -108,12 +108,6 @@ public abstract class ButtonDropTarget extends TextView setContentDescription(mText); } - protected void updateText(int resId) { - setText(resId); - mText = getText(); - setContentDescription(mText); - } - protected void setDrawable(int resId) { // We do not set the drawable in the xml as that inflates two drawables corresponding to // drawableLeft and drawableStart. @@ -242,7 +236,9 @@ public abstract class ButtonDropTarget extends TextView protected abstract boolean supportsDrop(ItemInfo info); - public abstract boolean supportsAccessibilityDrop(ItemInfo info, View view); + public boolean supportsAccessibilityDrop(ItemInfo info) { + return supportsDrop(info); + } @Override public boolean isDropEnabled() { @@ -372,6 +368,4 @@ public abstract class ButtonDropTarget extends TextView TextUtils.TruncateAt.END); return !mText.equals(displayedText); } - - public abstract int getControlTypeForLogging(); } diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index 28d11291b9..c12ea57c37 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -24,7 +24,6 @@ import android.view.View; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.dragndrop.DragOptions; import com.android.launcher3.folder.Folder; -import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType; public class DeleteDropTarget extends ButtonDropTarget { @@ -55,7 +54,7 @@ public class DeleteDropTarget extends ButtonDropTarget { * @return true for items that should have a "Remove" action in accessibility. */ @Override - public boolean supportsAccessibilityDrop(ItemInfo info, View view) { + public boolean supportsAccessibilityDrop(ItemInfo info) { return (info instanceof ShortcutInfo) || (info instanceof LauncherAppWidgetInfo) || (info instanceof FolderInfo); @@ -104,9 +103,4 @@ public class DeleteDropTarget extends ButtonDropTarget { mLauncher.getDragLayer() .announceForAccessibility(getContext().getString(R.string.item_removed)); } - - @Override - public int getControlTypeForLogging() { - return ControlType.REMOVE_TARGET; - } } diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java new file mode 100644 index 0000000000..e52fd765b9 --- /dev/null +++ b/src/com/android/launcher3/InfoDropTarget.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3; + +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.Context; +import android.graphics.Rect; +import android.os.Bundle; +import android.provider.Settings; +import android.util.AttributeSet; +import android.util.Log; +import android.widget.Toast; + +import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; +import com.android.launcher3.compat.LauncherAppsCompat; +import com.android.launcher3.util.Themes; + +public class InfoDropTarget extends UninstallDropTarget { + + private static final String TAG = "InfoDropTarget"; + + public InfoDropTarget(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public InfoDropTarget(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void setupUi() { + // Get the hover color + mHoverColor = Themes.getColorAccent(getContext()); + setDrawable(R.drawable.ic_info_shadow); + } + + @Override + protected ComponentName performDropAction(ItemInfo item) { + return performDropAction(mLauncher, item, null, null); + } + + /** + * @return Whether the activity was started. + */ + public static boolean startDetailsActivityForInfo( + ItemInfo info, Launcher launcher, Rect sourceBounds, Bundle opts) { + return performDropAction(launcher, info, sourceBounds, opts) != null; + } + + /** + * Performs the drop action and returns the target component for the dragObject or null if + * the action was not performed. + */ + private static ComponentName performDropAction(Context context, ItemInfo info, + Rect sourceBounds, Bundle opts) { + if (info instanceof PromiseAppInfo) { + PromiseAppInfo promiseAppInfo = (PromiseAppInfo) info; + context.startActivity(promiseAppInfo.getMarketIntent(context)); + return null; + } + ComponentName componentName = null; + if (info instanceof AppInfo) { + componentName = ((AppInfo) info).componentName; + } else if (info instanceof ShortcutInfo) { + componentName = info.getTargetComponent(); + } else if (info instanceof PendingAddItemInfo) { + componentName = ((PendingAddItemInfo) info).componentName; + } else if (info instanceof LauncherAppWidgetInfo) { + componentName = ((LauncherAppWidgetInfo) info).providerName; + } + if (componentName != null) { + try { + LauncherAppsCompat.getInstance(context) + .showAppDetailsForProfile(componentName, info.user, sourceBounds, opts); + return componentName; + } catch (SecurityException | ActivityNotFoundException e) { + Toast.makeText(context, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); + Log.e(TAG, "Unable to launch settings", e); + } + } + return null; + } + + @Override + public int getAccessibilityAction() { + return LauncherAccessibilityDelegate.INFO; + } + + @Override + protected boolean supportsDrop(ItemInfo info) { + // Only show the App Info drop target if developer settings are enabled. + boolean developmentSettingsEnabled = Settings.Global.getInt( + getContext().getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) == 1; + if (!developmentSettingsEnabled) { + return false; + } + return info.itemType != LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT && + (info instanceof AppInfo || + (info instanceof ShortcutInfo && !((ShortcutInfo) info).isPromise()) || + (info instanceof LauncherAppWidgetInfo && + ((LauncherAppWidgetInfo) info).restoreStatus == 0) || + info instanceof PendingAddItemInfo); + } +} diff --git a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java index 80758c99b9..c7139925c8 100644 --- a/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java +++ b/src/com/android/launcher3/LauncherAppWidgetProviderInfo.java @@ -94,12 +94,4 @@ public class LauncherAppWidgetProviderInfo extends AppWidgetProviderInfo { public boolean isCustomWidget() { return provider.getClassName().startsWith(CLS_CUSTOM_WIDGET_PREFIX); } - - public int getWidgetFeatures() { - if (Utilities.ATLEAST_P) { - return widgetFeatures; - } else { - return 0; - } - } } diff --git a/src/com/android/launcher3/SecondaryDropTarget.java b/src/com/android/launcher3/UninstallDropTarget.java similarity index 61% rename from src/com/android/launcher3/SecondaryDropTarget.java rename to src/com/android/launcher3/UninstallDropTarget.java index 024b4eb593..68a441ad98 100644 --- a/src/com/android/launcher3/SecondaryDropTarget.java +++ b/src/com/android/launcher3/UninstallDropTarget.java @@ -1,19 +1,8 @@ package com.android.launcher3; -import static android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID; -import static android.appwidget.AppWidgetProviderInfo.WIDGET_FEATURE_RECONFIGURABLE; - import static com.android.launcher3.ItemInfoWithIcon.FLAG_SYSTEM_MASK; import static com.android.launcher3.ItemInfoWithIcon.FLAG_SYSTEM_NO; -import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; -import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.RECONFIGURE; -import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.UNINSTALL; -import static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType.SETTINGS_BUTTON; -import static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType.UNINSTALL_TARGET; -import android.appwidget.AppWidgetHostView; -import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -31,33 +20,27 @@ import android.view.View; import android.widget.Toast; import com.android.launcher3.Launcher.OnResumeCallback; +import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.dragndrop.DragOptions; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; -import com.android.launcher3.util.Themes; import java.net.URISyntaxException; -/** - * Drop target which provides a secondary option for an item. - * For app targets: shows as uninstall - * For configurable widgets: shows as setup - */ -public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmListener { +public class UninstallDropTarget extends ButtonDropTarget implements OnAlarmListener { - private static final String TAG = "SecondaryDropTarget"; + private static final String TAG = "UninstallDropTarget"; private static final long CACHE_EXPIRE_TIMEOUT = 5000; private final ArrayMap mUninstallDisabledCache = new ArrayMap<>(1); private final Alarm mCacheExpireAlarm; - private int mCurrentAccessibilityAction = -1; - public SecondaryDropTarget(Context context, AttributeSet attrs) { + public UninstallDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public SecondaryDropTarget(Context context, AttributeSet attrs, int defStyle) { + public UninstallDropTarget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mCacheExpireAlarm = new Alarm(); @@ -67,24 +50,13 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList @Override protected void onFinishInflate() { super.onFinishInflate(); - setupUi(UNINSTALL); + setupUi(); } - private void setupUi(int action) { - if (action == mCurrentAccessibilityAction) { - return; - } - mCurrentAccessibilityAction = action; - - if (action == UNINSTALL) { - mHoverColor = getResources().getColor(R.color.uninstall_target_hover_tint); - setDrawable(R.drawable.ic_uninstall_shadow); - updateText(R.string.uninstall_drop_target_label); - } else { - mHoverColor = Themes.getColorAccent(getContext()); - setDrawable(R.drawable.ic_setup_shadow); - updateText(R.string.gadget_setup_text); - } + protected void setupUi() { + // Get the hover color + mHoverColor = getResources().getColor(R.color.uninstall_target_hover_tint); + setDrawable(R.drawable.ic_uninstall_shadow); } @Override @@ -94,30 +66,11 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList @Override public int getAccessibilityAction() { - return mCurrentAccessibilityAction; - } - - @Override - public int getControlTypeForLogging() { - return mCurrentAccessibilityAction == UNINSTALL ? UNINSTALL_TARGET : SETTINGS_BUTTON; + return LauncherAccessibilityDelegate.UNINSTALL; } @Override protected boolean supportsDrop(ItemInfo info) { - return supportsAccessibilityDrop(info, getViewUnderDrag(info)); - } - - @Override - public boolean supportsAccessibilityDrop(ItemInfo info, View view) { - if (view instanceof AppWidgetHostView) { - if (getReconfigurableWidgetId(view) != INVALID_APPWIDGET_ID) { - setupUi(RECONFIGURE); - return true; - } - return false; - } - - setupUi(UNINSTALL); Boolean uninstallDisabled = mUninstallDisabledCache.get(info.user); if (uninstallDisabled == null) { UserManager userManager = @@ -173,7 +126,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList @Override public void completeDrop(final DragObject d) { - ComponentName target = performDropAction(getViewUnderDrag(d.dragInfo), d.dragInfo); + ComponentName target = performDropAction(d.dragInfo); if (d.dragSource instanceof DeferredOnComplete) { DeferredOnComplete deferred = (DeferredOnComplete) d.dragSource; if (target != null) { @@ -185,48 +138,11 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList } } - private View getViewUnderDrag(ItemInfo info) { - if (info instanceof LauncherAppWidgetInfo && info.container == CONTAINER_DESKTOP && - mLauncher.getWorkspace().getDragInfo() != null) { - return mLauncher.getWorkspace().getDragInfo().cell; - } - return null; - } - - /** - * Verifies that the view is an reconfigurable widget and returns the corresponding widget Id, - * otherwise return {@code INVALID_APPWIDGET_ID} - */ - private int getReconfigurableWidgetId(View view) { - if (!(view instanceof AppWidgetHostView)) { - return INVALID_APPWIDGET_ID; - } - AppWidgetHostView hostView = (AppWidgetHostView) view; - AppWidgetProviderInfo widgetInfo = hostView.getAppWidgetInfo(); - if (widgetInfo == null || widgetInfo.configure == null) { - return INVALID_APPWIDGET_ID; - } - if ( (LauncherAppWidgetProviderInfo.fromProviderInfo(getContext(), widgetInfo) - .getWidgetFeatures() & WIDGET_FEATURE_RECONFIGURABLE) == 0) { - return INVALID_APPWIDGET_ID; - } - return hostView.getAppWidgetId(); - } - /** * Performs the drop action and returns the target component for the dragObject or null if * the action was not performed. */ - protected ComponentName performDropAction(View view, ItemInfo info) { - if (mCurrentAccessibilityAction == RECONFIGURE) { - int widgetId = getReconfigurableWidgetId(view); - if (widgetId != INVALID_APPWIDGET_ID) { - mLauncher.getAppWidgetHost().startConfigActivity(mLauncher, widgetId, -1); - } - return null; - } - // else: mCurrentAccessibilityAction == UNINSTALL - + protected ComponentName performDropAction(ItemInfo info) { ComponentName cn = getUninstallTarget(info); if (cn == null) { // System applications cannot be installed. For now, show a toast explaining that. @@ -248,7 +164,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList @Override public void onAccessibilityDrop(View view, ItemInfo item) { - performDropAction(view, item); + performDropAction(item); } /** @@ -287,7 +203,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList .getApplicationInfo(mPackageName, PackageManager.MATCH_UNINSTALLED_PACKAGES, mDragObject.dragInfo.user) == null) { mDragObject.dragSource = mOriginal; - mOriginal.onDropCompleted(SecondaryDropTarget.this, mDragObject, true); + mOriginal.onDropCompleted(UninstallDropTarget.this, mDragObject, true); } else { sendFailure(); } @@ -296,7 +212,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList public void sendFailure() { mDragObject.dragSource = mOriginal; mDragObject.cancelled = true; - mOriginal.onDropCompleted(SecondaryDropTarget.this, mDragObject, false); + mOriginal.onDropCompleted(UninstallDropTarget.this, mDragObject, false); } } } diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java index 2cd8b1d729..3b6fea9465 100644 --- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java @@ -47,8 +47,8 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme private static final String TAG = "LauncherAccessibilityDelegate"; public static final int REMOVE = R.id.action_remove; + public static final int INFO = R.id.action_info; public static final int UNINSTALL = R.id.action_uninstall; - public static final int RECONFIGURE = R.id.action_reconfigure; protected static final int ADD_TO_WORKSPACE = R.id.action_add_to_workspace; protected static final int MOVE = R.id.action_move; protected static final int MOVE_TO_WORKSPACE = R.id.action_move_to_workspace; @@ -77,10 +77,10 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme mActions.put(REMOVE, new AccessibilityAction(REMOVE, launcher.getText(R.string.remove_drop_target_label))); + mActions.put(INFO, new AccessibilityAction(INFO, + launcher.getText(R.string.app_info_drop_target_label))); mActions.put(UNINSTALL, new AccessibilityAction(UNINSTALL, launcher.getText(R.string.uninstall_drop_target_label))); - mActions.put(RECONFIGURE, new AccessibilityAction(RECONFIGURE, - launcher.getText(R.string.gadget_setup_text))); mActions.put(ADD_TO_WORKSPACE, new AccessibilityAction(ADD_TO_WORKSPACE, launcher.getText(R.string.action_add_to_workspace))); mActions.put(MOVE, new AccessibilityAction(MOVE, @@ -110,7 +110,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme } for (ButtonDropTarget target : mLauncher.getDropTargetBar().getDropTargets()) { - if (target.supportsAccessibilityDrop(item, host)) { + if (target.supportsAccessibilityDrop(item)) { info.addAction(mActions.get(target.getAccessibilityAction())); } } @@ -222,8 +222,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme return PopupContainerWithArrow.showForIcon((BubbleTextView) host) != null; } else { for (ButtonDropTarget dropTarget : mLauncher.getDropTargetBar().getDropTargets()) { - if (dropTarget.supportsAccessibilityDrop(item, host) && - action == dropTarget.getAccessibilityAction()) { + if (action == dropTarget.getAccessibilityAction()) { dropTarget.onAccessibilityDrop(host, item); return true; } diff --git a/src/com/android/launcher3/logging/LoggerUtils.java b/src/com/android/launcher3/logging/LoggerUtils.java index d68ac15966..c608a233ff 100644 --- a/src/com/android/launcher3/logging/LoggerUtils.java +++ b/src/com/android/launcher3/logging/LoggerUtils.java @@ -20,8 +20,11 @@ import android.util.SparseArray; import android.view.View; import com.android.launcher3.ButtonDropTarget; +import com.android.launcher3.DeleteDropTarget; +import com.android.launcher3.InfoDropTarget; import com.android.launcher3.ItemInfo; import com.android.launcher3.LauncherSettings; +import com.android.launcher3.UninstallDropTarget; import com.android.launcher3.userevent.nano.LauncherLogExtensions.TargetExtension; import com.android.launcher3.userevent.nano.LauncherLogProto.Action; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; @@ -162,8 +165,12 @@ public class LoggerUtils { return newTarget(Target.Type.CONTAINER); } Target t = newTarget(Target.Type.CONTROL); - if (v instanceof ButtonDropTarget) { - t.controlType = ((ButtonDropTarget) v).getControlTypeForLogging(); + if (v instanceof InfoDropTarget) { + t.controlType = ControlType.APPINFO_TARGET; + } else if (v instanceof UninstallDropTarget) { + t.controlType = ControlType.UNINSTALL_TARGET; + } else if (v instanceof DeleteDropTarget) { + t.controlType = ControlType.REMOVE_TARGET; } return t; } diff --git a/src/com/android/launcher3/model/WidgetsModel.java b/src/com/android/launcher3/model/WidgetsModel.java index 9f8f2632eb..1ff0daca05 100644 --- a/src/com/android/launcher3/model/WidgetsModel.java +++ b/src/com/android/launcher3/model/WidgetsModel.java @@ -1,8 +1,6 @@ package com.android.launcher3.model; -import static android.appwidget.AppWidgetProviderInfo.WIDGET_FEATURE_HIDE_FROM_PICKER; - import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import android.content.pm.PackageManager; @@ -155,11 +153,6 @@ public class WidgetsModel { // add and update. for (WidgetItem item : rawWidgetsShortcuts) { if (item.widgetInfo != null) { - if ((item.widgetInfo.getWidgetFeatures() & WIDGET_FEATURE_HIDE_FROM_PICKER) != 0) { - // Widget is hidden from picker - continue; - } - // Ensure that all widgets we show can be added on a workspace of this size int minSpanX = Math.min(item.widgetInfo.spanX, item.widgetInfo.minSpanX); int minSpanY = Math.min(item.widgetInfo.spanY, item.widgetInfo.minSpanY); diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java index 2cc8dfa76b..32fd0633c5 100644 --- a/src/com/android/launcher3/popup/SystemShortcut.java +++ b/src/com/android/launcher3/popup/SystemShortcut.java @@ -9,6 +9,7 @@ import android.os.Bundle; import android.view.View; import com.android.launcher3.AbstractFloatingView; +import com.android.launcher3.InfoDropTarget; import com.android.launcher3.ItemInfo; import com.android.launcher3.Launcher; import com.android.launcher3.R; @@ -82,8 +83,7 @@ public abstract class SystemShortcut extends ItemInfo { public void onClick(View view) { Rect sourceBounds = launcher.getViewBounds(view); Bundle opts = launcher.getActivityLaunchOptionsAsBundle(view, false); - new PackageManagerHelper(launcher).startDetailsActivityForInfo( - itemInfo, sourceBounds, opts); + InfoDropTarget.startDetailsActivityForInfo(itemInfo, launcher, sourceBounds, opts); launcher.getUserEventDispatcher().logActionOnControl(Action.Touch.TAP, ControlType.APPINFO_TARGET, view); } diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java index 0b3b632c02..81df153807 100644 --- a/src/com/android/launcher3/util/PackageManagerHelper.java +++ b/src/com/android/launcher3/util/PackageManagerHelper.java @@ -17,8 +17,6 @@ package com.android.launcher3.util; import android.app.AppOpsManager; -import android.content.ActivityNotFoundException; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -26,23 +24,13 @@ import android.content.pm.LauncherActivityInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; -import android.graphics.Rect; import android.net.Uri; import android.os.Build; -import android.os.Bundle; import android.os.UserHandle; import android.text.TextUtils; -import android.util.Log; -import android.widget.Toast; import com.android.launcher3.AppInfo; -import com.android.launcher3.ItemInfo; -import com.android.launcher3.Launcher; -import com.android.launcher3.LauncherAppWidgetInfo; -import com.android.launcher3.PendingAddItemInfo; -import com.android.launcher3.PromiseAppInfo; import com.android.launcher3.R; -import com.android.launcher3.ShortcutInfo; import com.android.launcher3.Utilities; import com.android.launcher3.compat.LauncherAppsCompat; @@ -54,8 +42,6 @@ import java.util.List; */ public class PackageManagerHelper { - private static final String TAG = "PackageManagerHelper"; - private final Context mContext; private final PackageManager mPm; private final LauncherAppsCompat mLauncherApps; @@ -183,35 +169,4 @@ public class PackageManagerHelper { throw new RuntimeException(e); } } - - - /** - * Starts the details activity for {@code info} - */ - public void startDetailsActivityForInfo(ItemInfo info, Rect sourceBounds, Bundle opts) { - if (info instanceof PromiseAppInfo) { - PromiseAppInfo promiseAppInfo = (PromiseAppInfo) info; - mContext.startActivity(promiseAppInfo.getMarketIntent(mContext)); - return; - } - ComponentName componentName = null; - if (info instanceof AppInfo) { - componentName = ((AppInfo) info).componentName; - } else if (info instanceof ShortcutInfo) { - componentName = info.getTargetComponent(); - } else if (info instanceof PendingAddItemInfo) { - componentName = ((PendingAddItemInfo) info).componentName; - } else if (info instanceof LauncherAppWidgetInfo) { - componentName = ((LauncherAppWidgetInfo) info).providerName; - } - if (componentName != null) { - try { - mLauncherApps.showAppDetailsForProfile( - componentName, info.user, sourceBounds, opts); - } catch (SecurityException | ActivityNotFoundException e) { - Toast.makeText(mContext, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); - Log.e(TAG, "Unable to launch settings", e); - } - } - } } diff --git a/tests/AndroidManifest-common.xml b/tests/AndroidManifest-common.xml index a54268af0b..0a29147729 100644 --- a/tests/AndroidManifest-common.xml +++ b/tests/AndroidManifest-common.xml @@ -33,17 +33,6 @@ android:resource="@xml/appwidget_no_config" /> - - - - - - - - diff --git a/tests/res/xml/appwidget_hidden.xml b/tests/res/xml/appwidget_hidden.xml deleted file mode 100644 index 6f0e0066fd..0000000000 --- a/tests/res/xml/appwidget_hidden.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/res/xml/appwidget_with_config.xml b/tests/res/xml/appwidget_with_config.xml index 8403689876..3e96c6f2fb 100644 --- a/tests/res/xml/appwidget_with_config.xml +++ b/tests/res/xml/appwidget_with_config.xml @@ -7,6 +7,5 @@ android:initialLayout="@layout/test_layout_appwidget_blue" android:configure="com.android.launcher3.testcomponent.WidgetConfigActivity" android:resizeMode="horizontal|vertical" - android:widgetFeatures="reconfigurable" android:widgetCategory="home_screen"> \ No newline at end of file diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java b/tests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java deleted file mode 100644 index 83492bfd29..0000000000 --- a/tests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.android.launcher3.testcomponent; - -import android.appwidget.AppWidgetProvider; - -/** - * A simple app widget without any configuration screen and is hidden in picker. - */ -public class AppWidgetHidden extends AppWidgetProvider { }