summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornebkat <nebkat@teamhacksung.org>2012-12-31 15:00:32 +0000
committernebkat <nebkat@teamhacksung.org>2012-12-31 15:00:32 +0000
commit245a6efd8d16359b2706017f70a23413d2a64100 (patch)
tree73c03ba7aad56587ba3b9b1fc9b1a529f0326449
parent55241e57fddfac64d0cc2e8895bfa7452b511c0d (diff)
downloadandroid_packages_apps_Trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.tar.gz
android_packages_apps_Trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.tar.bz2
android_packages_apps_Trebuchet-245a6efd8d16359b2706017f70a23413d2a64100.zip
LauncherProvider: Revert changes to check whether app is installed before adding favorite
Change-Id: Idb9f6bb638b7972a1e52d7992e956bfdeb768be4
-rw-r--r--src/com/cyanogenmod/trebuchet/LauncherProvider.java47
1 files changed, 31 insertions, 16 deletions
diff --git a/src/com/cyanogenmod/trebuchet/LauncherProvider.java b/src/com/cyanogenmod/trebuchet/LauncherProvider.java
index d33f6fde3..c7649b786 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;
}