diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f199673..c0e1db8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1409,7 +1409,7 @@
         <!-- Lock screen settings -->
         <activity android:name="ConfirmDeviceCredentialActivity"
             android:exported="true"
-            android:theme="@style/Transparent">
+            android:theme="@android:style/Theme.NoDisplay">
             <intent-filter android:priority="1">
                 <action android:name="android.app.action.CONFIRM_DEVICE_CREDENTIAL" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/src/com/android/settings/ChooseLockSettingsHelper.java b/src/com/android/settings/ChooseLockSettingsHelper.java
index 327e622..665bffe 100644
--- a/src/com/android/settings/ChooseLockSettingsHelper.java
+++ b/src/com/android/settings/ChooseLockSettingsHelper.java
@@ -158,10 +158,19 @@
         intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, hasChallenge);
         intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge);
         intent.setClassName(ConfirmDeviceCredentialBaseFragment.PACKAGE, activityClass.getName());
-        if (mFragment != null) {
-            mFragment.startActivityForResult(intent, request);
+        if (external) {
+            intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+            if (mFragment != null) {
+                mFragment.startActivity(intent);
+            } else {
+                mActivity.startActivity(intent);
+            }
         } else {
-            mActivity.startActivityForResult(intent, request);
+            if (mFragment != null) {
+                mFragment.startActivityForResult(intent, request);
+            } else {
+                mActivity.startActivityForResult(intent, request);
+            }
         }
         return true;
     }
diff --git a/src/com/android/settings/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/ConfirmDeviceCredentialActivity.java
index da39a0f..86935c3 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialActivity.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialActivity.java
@@ -58,23 +58,12 @@
         String title = intent.getStringExtra(KeyguardManager.EXTRA_TITLE);
         String details = intent.getStringExtra(KeyguardManager.EXTRA_DESCRIPTION);
 
-        // Ignore rotates and ensure we only launch this once
-        if (savedInstanceState == null) {
-            ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
-            if (!helper.launchConfirmationActivity(0 /* request code */, null /* title */, title,
-                    details, false /* returnCredentials */, true /* isExternal */)) {
-                Log.d(TAG, "No pattern, password or PIN set.");
-                setResult(Activity.RESULT_OK);
-                finish();
-            }
+        ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
+        if (!helper.launchConfirmationActivity(0 /* request code */, null /* title */, title,
+                details, false /* returnCredentials */, true /* isExternal */)) {
+            Log.d(TAG, "No pattern, password or PIN set.");
+            setResult(Activity.RESULT_OK);
         }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        boolean credentialsConfirmed = (resultCode == Activity.RESULT_OK);
-        Log.d(TAG, "Device credentials confirmed: " + credentialsConfirmed);
-        setResult(credentialsConfirmed ? Activity.RESULT_OK : Activity.RESULT_CANCELED);
         finish();
     }
 }
