From da01d199c1cf5581685748d084479751a76b362f Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Mon, 13 Feb 2023 15:37:30 +0800 Subject: [PATCH] Allow save by AddNetworkFragment itself Before this change, the calling Activity needs to check result and get WifiConfiguration to save data by WifiManager API. This change allows callings app to specify an auto save extra to save WifiConfiguration by AddNetworkFragment itself. Bug: 268411305 Test: manual Change-Id: I83002c3de3d6726e9be363d5ac057b4ae9e1707e --- .../settings/wifi/AddNetworkFragment.java | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/wifi/AddNetworkFragment.java b/src/com/android/settings/wifi/AddNetworkFragment.java index 47a027d8bed..9fd8626f3bf 100644 --- a/src/com/android/settings/wifi/AddNetworkFragment.java +++ b/src/com/android/settings/wifi/AddNetworkFragment.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Intent; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -28,6 +29,7 @@ import android.view.WindowManager; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.VisibleForTesting; @@ -51,6 +53,8 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0; + private static final String EXTRA_SAVE_WHEN_SUBMIT = ":settings:save_when_submit"; + private WifiConfigController2 mUIController; private Button mSubmitBtn; private Button mCancelBtn; @@ -196,11 +200,35 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf } private void successfullyFinish(WifiConfiguration config) { - final Intent intent = new Intent(); - final Activity activity = getActivity(); - intent.putExtra(WIFI_CONFIG_KEY, config); - activity.setResult(Activity.RESULT_OK, intent); - activity.finish(); + Activity activity = getActivity(); + boolean autoSave = activity.getIntent().getBooleanExtra(EXTRA_SAVE_WHEN_SUBMIT, false); + if (autoSave && config != null) { + WifiManager.ActionListener saveListener = new WifiManager.ActionListener() { + @Override + public void onSuccess() { + if (activity != null && !activity.isFinishing()) { + activity.setResult(Activity.RESULT_OK); + activity.finish(); + } + } + + @Override + public void onFailure(int reason) { + if (activity != null && !activity.isFinishing()) { + Toast.makeText(activity, R.string.wifi_failed_save_message, + Toast.LENGTH_SHORT).show(); + activity.finish(); + } + } + }; + + activity.getSystemService(WifiManager.class).save(config, saveListener); + } else { + Intent intent = new Intent(); + intent.putExtra(WIFI_CONFIG_KEY, config); + activity.setResult(Activity.RESULT_OK, intent); + activity.finish(); + } } @VisibleForTesting