Remove singleTop, as it's causing serious problems on the phone. And...

Fix fragment launching from another app - pass along the fragment class name
and bundle from the original intent.

Bug: 3064432
Bug: 3059311 (partial fix)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 90c1355..29b5469 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -52,7 +52,7 @@
                 android:label="@string/settings_label_launcher"
                 android:taskAffinity="com.android.settings"
                 android:theme="@android:style/Theme.Holo"
-                android:launchMode="singleTop">
+                >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.SETTINGS" />
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 1f57f6c..6cc641e 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,9 +16,7 @@
 
 package com.android.settings;
 
-import android.app.Fragment;
 import android.content.Intent;
-import android.os.Bundle;
 import android.preference.PreferenceActivity;
 
 import java.util.List;
@@ -30,6 +28,18 @@
 
     // TODO: Update Call Settings based on airplane mode state.
 
+    @Override
+    public Intent getIntent() {
+        String startingFragment = getStartingFragmentClass(super.getIntent());
+        if (startingFragment != null && !onIsMultiPane()) {
+            Intent modIntent = new Intent(super.getIntent());
+            modIntent.putExtra(EXTRA_SHOW_FRAGMENT, startingFragment);
+            modIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, super.getIntent().getExtras());
+            return modIntent;
+        }
+        return super.getIntent();
+    }
+
     /**
      * Checks if the component name in the intent is different from the Settings class and
      * returns the class name to load as a fragment.
@@ -51,6 +61,7 @@
         if (fragmentClass != null) {
             Header header = new Header();
             header.fragment = fragmentClass;
+            header.fragmentArguments = getIntent().getExtras();
             return header;
         }
         return super.onGetInitialHeader();