Fix 2797185: Show 3D Recents on xlarge device
This fixes a bug where some xlarge devices weren't showing 3D recent apps.
The cause was that the config wasn't guaranteed to be loaded by
the time we reach init() in PhoneWindowManager.
The fix looks at the property on-demand, which can't happen
until after the user sees the home screen, which guarantees the
configuration is loaded.
Change-Id: Ic41196f7a15218033b831e6e9cf9d536e0712844
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 4d4c799..6e5db2b 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -270,7 +270,6 @@
Intent mHomeIntent;
Intent mCarDockIntent;
Intent mDeskDockIntent;
- Intent mRecentAppsIntent;
boolean mSearchKeyPressed;
boolean mConsumeSearchKeyUp;
@@ -291,6 +290,9 @@
// Nothing to see here, move along...
int mFancyRotationAnimation;
+
+ // Enable 3D recents based on config settings.
+ private Boolean mUse3dRecents;
ShortcutManager mShortcutManager;
PowerManager.WakeLock mBroadcastWakeLock;
@@ -493,9 +495,20 @@
* Create (if necessary) and launch the recent apps dialog
*/
void showRecentAppsDialog() {
- if (mRecentAppsIntent != null) {
+ // We can't initialize this in init() since the configuration hasn't been loaded yet.
+ if (mUse3dRecents == null) {
+ mUse3dRecents = mContext.getResources().getBoolean(R.bool.config_enableRecentApps3D);
+ }
+
+ // Use 3d Recents dialog
+ if (mUse3dRecents) {
try {
- mContext.startActivity(mRecentAppsIntent);
+ Intent intent = new Intent();
+ intent.setClassName("com.android.systemui",
+ "com.android.systemui.statusbar.RecentApplicationsActivity");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ mContext.startActivity(intent);
return;
} catch (ActivityNotFoundException e) {
Log.e(TAG, "Failed to launch RecentAppsIntent", e);
@@ -535,17 +548,6 @@
mDeskDockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
- boolean use3dRecents = mContext.getResources().getBoolean(R.bool.config_enableRecentApps3D);
- if (use3dRecents) {
- mRecentAppsIntent = new Intent();
- mRecentAppsIntent.setClassName("com.android.systemui",
- "com.android.systemui.statusbar.RecentApplicationsActivity");
- mRecentAppsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- } else {
- mRecentAppsIntent = null;
- }
-
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
mBroadcastWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"PhoneWindowManager.mBroadcastWakeLock");