Rearranging the provider checks to avoid packagemanager lookups
whenever launcher starts
Bug: 28737985
Change-Id: I3ce3e2741b3224fa5419d7ceca496e1bb91f065c
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index e93068e..b7dd98d 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -58,6 +58,7 @@
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
@@ -201,6 +202,7 @@
private static final String QSB_WIDGET_PROVIDER = "qsb_widget_provider";
public static final String USER_HAS_MIGRATED = "launcher.user_migrated_from_old_data";
+ private static final String MIGRATE_AUTHORITY = "com.android.launcher2.settings";
/** The different states that Launcher can be in. */
enum State { NONE, WORKSPACE, WORKSPACE_SPRING_LOADED, APPS, APPS_SPRING_LOADED,
@@ -4389,18 +4391,7 @@
}
protected boolean isLauncherPreinstalled() {
- PackageManager pm = getPackageManager();
- try {
- ApplicationInfo ai = pm.getApplicationInfo(getComponentName().getPackageName(), 0);
- if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
- return true;
- } else {
- return false;
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- return false;
- }
+ return (getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) != 0)
}
/**
@@ -4522,7 +4513,7 @@
LauncherClings launcherClings = new LauncherClings(this);
if (launcherClings.shouldShowFirstRunOrMigrationClings()) {
mClings = launcherClings;
- if (mModel.canMigrateFromOldLauncherDb(this)) {
+ if (canMigrateFromOldLauncherDb()) {
launcherClings.showMigrationCling();
} else {
launcherClings.showLongPressCling(true);
@@ -4530,6 +4521,19 @@
}
}
+ private boolean canMigrateFromOldLauncherDb() {
+ // Return true if launcher was not preinstalled and and old content provider exists.
+ return ((getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) == 0) &&
+ providerExists(MIGRATE_AUTHORITY) &&
+ providerExists(Uri.parse(getString(R.string.old_launcher_provider_uri)).getAuthority());
+
+ }
+
+ private boolean providerExists(String authority) {
+ return getPackageManager().resolveContentProvider(authority, 0) != null;
+ }
+
+
void showWorkspaceSearchAndHotseat() {
if (mWorkspace != null) mWorkspace.setAlpha(1f);
if (mHotseat != null) mHotseat.setAlpha(1f);