Merge "[Autofill Crash]: Fix NPE in AutofillManager." into tm-dev

This commit is contained in:
Simranjit Kohli
2022-04-21 14:04:00 +00:00
committed by Android (Google) Code Review
2 changed files with 9 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import android.annotation.Nullable;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.annotation.TestApi; import android.annotation.TestApi;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender; import android.content.IntentSender;
import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice;
import android.os.Bundle; import android.os.Bundle;
@@ -306,6 +307,13 @@ public final class FillResponse implements Parcelable {
* with the fully populated {@link FillResponse response} (or {@code null} if the screen * with the fully populated {@link FillResponse response} (or {@code null} if the screen
* cannot be autofilled). * cannot be autofilled).
* *
* <p> <b>IMPORTANT</b>: Extras must be non-null on the intent being set for Android 12
* otherwise it will cause a crash. Do not use {@link Activity#setResult(int)}, instead use
* {@link Activity#setResult(int, Intent) with non-null extras. Consider setting {
* @link android.view.autofill.AutofillManager#EXTRA_AUTHENTICATION_RESULT} to null or use
* {@link Bundle#EMPTY} with {@link Intent#putExtras(Bundle)} on the intent when
* finishing activity to avoid crash). </p>
*
* <p>For example, if you provided an empty {@link FillResponse response} because the * <p>For example, if you provided an empty {@link FillResponse response} because the
* user's data was locked and marked that the response needs an authentication then * user's data was locked and marked that the response needs an authentication then
* in the response returned if authentication succeeds you need to provide all * in the response returned if authentication succeeds you need to provide all

View File

@@ -1958,7 +1958,7 @@ public final class AutofillManager {
if (newClientState != null) { if (newClientState != null) {
responseData.putBundle(EXTRA_CLIENT_STATE, newClientState); responseData.putBundle(EXTRA_CLIENT_STATE, newClientState);
} }
if (data.getExtras().containsKey(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET)) { if (data.hasExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET)) {
responseData.putBoolean(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET, responseData.putBoolean(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET,
data.getBooleanExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET, data.getBooleanExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET,
false)); false));