[Settings] Enable ActivityResultLauncher for keyguard
Enable the support of ActivityResultLauncher for keyguard. Bug: 260034791 Test: local Change-Id: I0643241d7b79ba0ac4cd2314a126f33eb6557cc0
This commit is contained in:
@@ -40,6 +40,9 @@ import android.widget.Button;
|
|||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResult;
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
import com.android.settings.core.InstrumentedFragment;
|
||||||
@@ -70,6 +73,7 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
// Arbitrary to avoid conficts
|
// Arbitrary to avoid conficts
|
||||||
private static final int KEYGUARD_REQUEST = 55;
|
private static final int KEYGUARD_REQUEST = 55;
|
||||||
|
|
||||||
|
private ActivityResultLauncher mActivityResultLauncher;
|
||||||
private List<SubscriptionInfo> mSubscriptions;
|
private List<SubscriptionInfo> mSubscriptions;
|
||||||
|
|
||||||
private View mContentView;
|
private View mContentView;
|
||||||
@@ -82,6 +86,10 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
getActivity().setTitle(R.string.reset_network_title);
|
getActivity().setTitle(R.string.reset_network_title);
|
||||||
|
|
||||||
|
mActivityResultLauncher = registerForActivityResult(
|
||||||
|
new ActivityResultContracts.StartActivityForResult(),
|
||||||
|
result -> onActivityLauncherResult(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,20 +104,14 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
new ChooseLockSettingsHelper.Builder(getActivity(), this);
|
new ChooseLockSettingsHelper.Builder(getActivity(), this);
|
||||||
return builder.setRequestCode(request)
|
return builder.setRequestCode(request)
|
||||||
.setTitle(res.getText(R.string.reset_network_title))
|
.setTitle(res.getText(R.string.reset_network_title))
|
||||||
|
.setActivityResultLauncher(mActivityResultLauncher)
|
||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onActivityLauncherResult(ActivityResult result) {
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
|
||||||
|
|
||||||
if (requestCode != KEYGUARD_REQUEST) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the user entered a valid keyguard trace, present the final
|
// If the user entered a valid keyguard trace, present the final
|
||||||
// confirmation prompt; otherwise, go back to the initial state.
|
// confirmation prompt; otherwise, go back to the initial state.
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (result.getResultCode() == Activity.RESULT_OK) {
|
||||||
showFinalConfirmation();
|
showFinalConfirmation();
|
||||||
} else if (mContentView != null) {
|
} else if (mContentView != null) {
|
||||||
establishInitialState(getActiveSubscriptionInfoList());
|
establishInitialState(getActiveSubscriptionInfoList());
|
||||||
|
@@ -28,6 +28,7 @@ import android.content.IntentSender;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
@@ -109,19 +110,23 @@ public final class ChooseLockSettingsHelper {
|
|||||||
@VisibleForTesting @NonNull LockPatternUtils mLockPatternUtils;
|
@VisibleForTesting @NonNull LockPatternUtils mLockPatternUtils;
|
||||||
@NonNull private final Activity mActivity;
|
@NonNull private final Activity mActivity;
|
||||||
@Nullable private final Fragment mFragment;
|
@Nullable private final Fragment mFragment;
|
||||||
|
@Nullable private final ActivityResultLauncher mActivityResultLauncher;
|
||||||
@NonNull private final Builder mBuilder;
|
@NonNull private final Builder mBuilder;
|
||||||
|
|
||||||
private ChooseLockSettingsHelper(@NonNull Builder builder, @NonNull Activity activity,
|
private ChooseLockSettingsHelper(@NonNull Builder builder, @NonNull Activity activity,
|
||||||
@Nullable Fragment fragment) {
|
@Nullable Fragment fragment,
|
||||||
|
@Nullable ActivityResultLauncher activityResultLauncher) {
|
||||||
mBuilder = builder;
|
mBuilder = builder;
|
||||||
mActivity = activity;
|
mActivity = activity;
|
||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
|
mActivityResultLauncher = activityResultLauncher;
|
||||||
mLockPatternUtils = new LockPatternUtils(activity);
|
mLockPatternUtils = new LockPatternUtils(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
@NonNull private final Activity mActivity;
|
@NonNull private final Activity mActivity;
|
||||||
@Nullable private Fragment mFragment;
|
@Nullable private Fragment mFragment;
|
||||||
|
@Nullable private ActivityResultLauncher mActivityResultLauncher;
|
||||||
|
|
||||||
private int mRequestCode;
|
private int mRequestCode;
|
||||||
@Nullable private CharSequence mTitle;
|
@Nullable private CharSequence mTitle;
|
||||||
@@ -265,6 +270,18 @@ public final class ChooseLockSettingsHelper {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support of ActivityResultLauncher.
|
||||||
|
*
|
||||||
|
* Which allowing the launch operation be controlled externally.
|
||||||
|
* @param activityResultLauncher a launcher previously prepared.
|
||||||
|
*/
|
||||||
|
@NonNull public Builder setActivityResultLauncher(
|
||||||
|
ActivityResultLauncher activityResultLauncher) {
|
||||||
|
mActivityResultLauncher = activityResultLauncher;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull public ChooseLockSettingsHelper build() {
|
@NonNull public ChooseLockSettingsHelper build() {
|
||||||
if (!mAllowAnyUserId && mUserId != LockPatternUtils.USER_FRP) {
|
if (!mAllowAnyUserId && mUserId != LockPatternUtils.USER_FRP) {
|
||||||
Utils.enforceSameOwner(mActivity, mUserId);
|
Utils.enforceSameOwner(mActivity, mUserId);
|
||||||
@@ -282,7 +299,8 @@ public final class ChooseLockSettingsHelper {
|
|||||||
+ " ReturnCredentials. Are you sure this is what you want?");
|
+ " ReturnCredentials. Are you sure this is what you want?");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ChooseLockSettingsHelper(this, mActivity, mFragment);
|
return new ChooseLockSettingsHelper(this, mActivity, mFragment,
|
||||||
|
mActivityResultLauncher);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean show() {
|
public boolean show() {
|
||||||
@@ -369,13 +387,17 @@ public final class ChooseLockSettingsHelper {
|
|||||||
if (external) {
|
if (external) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
||||||
copyOptionalExtras(inIntent, intent);
|
copyOptionalExtras(inIntent, intent);
|
||||||
if (mFragment != null) {
|
if (mActivityResultLauncher != null) {
|
||||||
|
mActivityResultLauncher.launch(intent);
|
||||||
|
} else if (mFragment != null) {
|
||||||
mFragment.startActivity(intent);
|
mFragment.startActivity(intent);
|
||||||
} else {
|
} else {
|
||||||
mActivity.startActivity(intent);
|
mActivity.startActivity(intent);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mFragment != null) {
|
if (mActivityResultLauncher != null) {
|
||||||
|
mActivityResultLauncher.launch(intent);
|
||||||
|
} else if (mFragment != null) {
|
||||||
mFragment.startActivityForResult(intent, request);
|
mFragment.startActivityForResult(intent, request);
|
||||||
} else {
|
} else {
|
||||||
mActivity.startActivityForResult(intent, request);
|
mActivity.startActivityForResult(intent, request);
|
||||||
|
Reference in New Issue
Block a user