diff options
author | nebkat <nebkat@teamhacksung.org> | 2012-12-31 15:00:32 +0000 |
---|---|---|
committer | nebkat <nebkat@teamhacksung.org> | 2012-12-31 15:00:32 +0000 |
commit | 245a6efd8d16359b2706017f70a23413d2a64100 (patch) | |
tree | 73c03ba7aad56587ba3b9b1fc9b1a529f0326449 | |
parent | 55241e57fddfac64d0cc2e8895bfa7452b511c0d (diff) | |
download | packages_apps_trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.zip packages_apps_trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.tar.gz packages_apps_trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.tar.bz2 |
LauncherProvider: Revert changes to check whether app is installed before adding favorite
Change-Id: Idb9f6bb638b7972a1e52d7992e956bfdeb768be4
-rw-r--r-- | src/com/cyanogenmod/trebuchet/LauncherProvider.java | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/src/com/cyanogenmod/trebuchet/LauncherProvider.java b/src/com/cyanogenmod/trebuchet/LauncherProvider.java index d33f6fd..c7649b7 100644 --- a/src/com/cyanogenmod/trebuchet/LauncherProvider.java +++ b/src/com/cyanogenmod/trebuchet/LauncherProvider.java @@ -28,6 +28,7 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Resources; import android.content.res.TypedArray; @@ -618,7 +619,7 @@ public class LauncherProvider extends ContentProvider { values.put(LauncherSettings.Favorites.CELLY, y); if (TAG_FAVORITE.equals(name)) { - long id = addAppShortcut(db, values, a, intent); + long id = addAppShortcut(db, values, a, packageManager, intent); added = id >= 0; } else if (TAG_SEARCH.equals(name)) { added = addSearchWidget(db, values); @@ -661,7 +662,7 @@ public class LauncherProvider extends ContentProvider { if (TAG_FAVORITE.equals(folder_item_name) && folderId >= 0) { long id = - addAppShortcut(db, values, ar, intent); + addAppShortcut(db, values, ar, packageManager, intent); if (id >= 0) { folderItems.add(id); } @@ -703,22 +704,36 @@ public class LauncherProvider extends ContentProvider { } private long addAppShortcut(SQLiteDatabase db, ContentValues values, TypedArray a, - Intent intent) { - long id; + PackageManager packageManager, Intent intent) { + long id = -1; String packageName = a.getString(R.styleable.Favorite_packageName); String className = a.getString(R.styleable.Favorite_className); - ComponentName cn = new ComponentName(packageName, className); - id = generateNewId(); - intent.setComponent(cn); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | - Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - values.put(Favorites.INTENT, intent.toUri(0)); - values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPLICATION); - values.put(Favorites.SPANX, 1); - values.put(Favorites.SPANY, 1); - values.put(Favorites._ID, generateNewId()); - if (dbInsertAndCheck(db, TABLE_FAVORITES, null, values) < 0) { - return -1; + try { + ComponentName cn; + try { + cn = new ComponentName(packageName, className); + packageManager.getActivityInfo(cn, 0); + } catch (PackageManager.NameNotFoundException nnfe) { + String[] packages = packageManager.currentToCanonicalPackageNames( + new String[] { packageName }); + cn = new ComponentName(packages[0], className); + packageManager.getActivityInfo(cn, 0); + } + id = generateNewId(); + intent.setComponent(cn); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | + Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + values.put(Favorites.INTENT, intent.toUri(0)); + values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPLICATION); + values.put(Favorites.SPANX, 1); + values.put(Favorites.SPANY, 1); + values.put(Favorites._ID, generateNewId()); + if (dbInsertAndCheck(db, TABLE_FAVORITES, null, values) < 0) { + return -1; + } + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, "Unable to add favorite: " + packageName + + "/" + className, e); } return id; } |