From 3ed316a71d5ec5be2e25ba0a993ebd71a260217c Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 23 Jul 2014 18:21:20 -0700 Subject: Adding broadcast to indicate first launcher load -> fixing small thing from previous CL issue 16191557 Change-Id: I015859f6028066e7c8664436f291ed226a539e29 --- AndroidManifest.xml | 4 +++- res/values/strings.xml | 3 +++ src/com/android/launcher3/Launcher.java | 17 +++++++++++++++++ src/com/android/launcher3/LauncherProvider.java | 7 ++++--- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 49efc5d89..f391a19a2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -50,11 +50,13 @@ android:protectionLevel="signatureOrSystem" android:label="@string/permlab_write_settings" android:description="@string/permdesc_write_settings"/> - + diff --git a/res/values/strings.xml b/res/values/strings.xml index 1ee1be6fd..780dcd22a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -27,6 +27,9 @@ com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS + + com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST + Launcher3 diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 65f9cbee8..718634d42 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -209,6 +209,10 @@ public class Launcher extends Activity static final String INTRO_SCREEN_DISMISSED = "launcher.intro_screen_dismissed"; static final String FIRST_RUN_ACTIVITY_DISPLAYED = "launcher.first_run_activity_displayed"; + static final String FIRST_LOAD_COMPLETE = "launcher.first_load_complete"; + static final String ACTION_FIRST_LOAD_COMPLETE = + "com.android.launcher3.action.FIRST_LOAD_COMPLETE"; + private static final String TOOLBAR_ICON_METADATA_NAME = "com.android.launcher.toolbar_icon"; private static final String TOOLBAR_SEARCH_ICON_METADATA_NAME = "com.android.launcher.toolbar_search_icon"; @@ -4454,6 +4458,7 @@ public class Launcher extends Activity } setWorkspaceLoading(false); + sendLoadingCompleteBroadcastIfNecessary(); // If we received the result of any pending adds while the loader was running (e.g. the // widget configuration forced an orientation change), process them now. @@ -4478,6 +4483,18 @@ public class Launcher extends Activity } } + private void sendLoadingCompleteBroadcastIfNecessary() { + if (!mSharedPrefs.getBoolean(FIRST_LOAD_COMPLETE, false)) { + String permission = + getResources().getString(R.string.receive_first_load_broadcast_permission); + Intent intent = new Intent(ACTION_FIRST_LOAD_COMPLETE); + sendBroadcast(intent, permission); + SharedPreferences.Editor editor = mSharedPrefs.edit(); + editor.putBoolean(FIRST_LOAD_COMPLETE, true); + editor.apply(); + } + } + public boolean isAllAppsButtonRank(int rank) { if (mHotseat != null) { return mHotseat.isAllAppsButtonRank(rank); diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 3ff617631..ac4a2063e 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -1275,14 +1275,15 @@ public class LauncherProvider extends ContentProvider { if (cn != null) { try { int appWidgetId = mAppWidgetHost.allocateAppWidgetId(); - if (!appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) { - return false; + values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId); + if (appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) { + return true; } } catch (RuntimeException e) { Log.e(TAG, "Failed to initialize external widget", e); - return false; } } + return false; } return true; } -- cgit v1.2.3