diff options
-rw-r--r-- | AndroidManifest.xml | 15 | ||||
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/UninstallShortcutReceiver.java | 112 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 2 |
4 files changed, 3 insertions, 128 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 8c837cc1d..f43106f18 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -29,12 +29,6 @@ android:label="@string/permlab_install_shortcut" android:description="@string/permdesc_install_shortcut" /> <permission - android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" - android:permissionGroup="android.permission-group.SYSTEM_TOOLS" - android:protectionLevel="dangerous" - android:label="@string/permlab_uninstall_shortcut" - android:description="@string/permdesc_uninstall_shortcut"/> - <permission android:name="com.android.launcher3.permission.READ_SETTINGS" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="normal" @@ -191,15 +185,6 @@ </intent-filter> </receiver> - <!-- Intent received used to uninstall shortcuts from other applications --> - <receiver - android:name="com.android.launcher3.UninstallShortcutReceiver" - android:permission="com.android.launcher.permission.UNINSTALL_SHORTCUT"> - <intent-filter> - <action android:name="com.android.launcher.action.UNINSTALL_SHORTCUT" /> - </intent-filter> - </receiver> - <!-- Intent received used to initialize a restored widget --> <receiver android:name="com.android.launcher3.AppWidgetsRestoredReceiver" > <intent-filter> diff --git a/res/values/strings.xml b/res/values/strings.xml index 0b34d00a8..7f79b984c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -113,8 +113,6 @@ s --> <string name="invalid_hotseat_item">This widget is too large for the Favorites tray</string> <!-- Message displayed when a shortcut is created by an external application --> <string name="shortcut_installed">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" created.</string> - <!-- Message displayed when a shortcut is uninstalled by an external application --> - <string name="shortcut_uninstalled">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" was removed.</string> <!-- Message displayed when an external application attemps to create a shortcut that already exists --> <string name="shortcut_duplicate">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" already exists.</string> diff --git a/src/com/android/launcher3/UninstallShortcutReceiver.java b/src/com/android/launcher3/UninstallShortcutReceiver.java index c9d0bb5f5..59e4cb591 100644 --- a/src/com/android/launcher3/UninstallShortcutReceiver.java +++ b/src/com/android/launcher3/UninstallShortcutReceiver.java @@ -17,117 +17,11 @@ package com.android.launcher3; import android.content.BroadcastReceiver; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.widget.Toast; - -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Iterator; +//TODO: Remove this public class UninstallShortcutReceiver extends BroadcastReceiver { - private static final String ACTION_UNINSTALL_SHORTCUT = - "com.android.launcher.action.UNINSTALL_SHORTCUT"; - - // The set of shortcuts that are pending uninstall - private static ArrayList<PendingUninstallShortcutInfo> mUninstallQueue = - new ArrayList<PendingUninstallShortcutInfo>(); - - // Determines whether to defer uninstalling shortcuts immediately until - // disableAndFlushUninstallQueue() is called. - private static boolean mUseUninstallQueue = false; - - private static class PendingUninstallShortcutInfo { - Intent data; - - public PendingUninstallShortcutInfo(Intent rawData) { - data = rawData; - } - } - - public void onReceive(Context context, Intent data) { - if (!ACTION_UNINSTALL_SHORTCUT.equals(data.getAction())) { - return; - } - - PendingUninstallShortcutInfo info = new PendingUninstallShortcutInfo(data); - if (mUseUninstallQueue) { - mUninstallQueue.add(info); - } else { - processUninstallShortcut(context, info); - } - } - - static void enableUninstallQueue() { - mUseUninstallQueue = true; - } - - static void disableAndFlushUninstallQueue(Context context) { - mUseUninstallQueue = false; - Iterator<PendingUninstallShortcutInfo> iter = mUninstallQueue.iterator(); - while (iter.hasNext()) { - processUninstallShortcut(context, iter.next()); - iter.remove(); - } - } - - private static void processUninstallShortcut(Context context, - PendingUninstallShortcutInfo pendingInfo) { - final Intent data = pendingInfo.data; - - LauncherAppState.setApplicationContext(context.getApplicationContext()); - LauncherAppState app = LauncherAppState.getInstance(); - synchronized (app) { // TODO: make removeShortcut internally threadsafe - removeShortcut(context, data); - } - } - - private static void removeShortcut(Context context, Intent data) { - Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT); - String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); - boolean duplicate = data.getBooleanExtra(Launcher.EXTRA_SHORTCUT_DUPLICATE, true); - - if (intent != null && name != null) { - final ContentResolver cr = context.getContentResolver(); - Cursor c = cr.query(LauncherSettings.Favorites.CONTENT_URI, - new String[] { LauncherSettings.Favorites._ID, LauncherSettings.Favorites.INTENT }, - LauncherSettings.Favorites.TITLE + "=?", new String[] { name }, null); - - final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT); - final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID); - - boolean changed = false; - - try { - while (c.moveToNext()) { - try { - String intentStr = c.getString(intentIndex); - if (intentStr != null - && intent.filterEquals(Intent.parseUri(intentStr, 0))) { - final long id = c.getLong(idIndex); - final Uri uri = LauncherSettings.Favorites.getContentUri(id, false); - cr.delete(uri, null, null); - changed = true; - if (!duplicate) { - break; - } - } - } catch (URISyntaxException e) { - // Ignore - } - } - } finally { - c.close(); - } - - if (changed) { - cr.notifyChange(LauncherSettings.Favorites.CONTENT_URI, null); - Toast.makeText(context, context.getString(R.string.shortcut_uninstalled, name), - Toast.LENGTH_SHORT).show(); - } - } - } + @Override + public void onReceive(Context context, Intent data) { } } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 92e01324f..ad15a6c33 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -402,7 +402,6 @@ public class Workspace extends SmoothPagedView setChildrenBackgroundAlphaMultipliers(1f); // Prevent any Un/InstallShortcutReceivers from updating the db while we are dragging InstallShortcutReceiver.enableInstallQueue(); - UninstallShortcutReceiver.enableUninstallQueue(); post(new Runnable() { @Override public void run() { @@ -430,7 +429,6 @@ public class Workspace extends SmoothPagedView // Re-enable any Un/InstallShortcutReceiver and now process any queued items InstallShortcutReceiver.disableAndFlushInstallQueue(getContext()); - UninstallShortcutReceiver.disableAndFlushUninstallQueue(getContext()); mDragSourceInternal = null; mLauncher.onInteractionEnd(); |