Как я могу вызвать экран настроек Wi-Fi из моего приложения с помощью Android
Обычно я получаю экран настройки Wi-Fi на эмуляторе, нажимая на Settings > Wireless controls > wifi settings
, Мне нужно перейти непосредственно к экрану настроек Wi-Fi из моей программы при нажатии на кнопку Wi-Fi, которую я создал. Контакты, Журналы вызовов мы можем обрабатывать с помощью Intent.setData(android.provider.contacts...........). Есть ли способ открыть настройки подменю / меню из программы android?
Пожалуйста, дайте мне совет или образец кода по этому вопросу.
9 ответов
Смотреть на android.provider.Settings
для серии Intent
действия, которые вы можете использовать для запуска различных экранов настроек (например, ACTION_WIFI_SETTINGS
).
РЕДАКТИРОВАТЬ: добавить строку кодирования.
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
Пример
ConnectivityManager manager = (ConnectivityManager)
getSystemService(MainActivity.CONNECTIVITY_SERVICE);
/*
* 3G confirm
*/
Boolean is3g = manager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
/*
* wifi confirm
*/
Boolean isWifi = manager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
if (is3g) {
textView.setText("3G");
} else if (isWifi) {
textView.setText("wifi");
} else {
textView.setText("nothing");
// Activity transfer to wifi settings
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
Просто нужно вызвать намерение с контекстом, попробуйте это:
startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));
Если вы хотите сделать это из XML-файла:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="@string/setting_key"
android:summary="@string/setting_summary"
android:title="@string/setting_title" >
<intent
android:action="android.settings.WIRELESS_SETTINGS"/>
</PreferenceScreen>
Это покажет запись в ваших настройках, которая будет вызывать активность настройки платформы
Если вы используете Android 10 и ваша цель - заставить пользователя включить Wi-Fi, вам больше не нужно фактически переходить к экрану настроек Wi-Fi. Вы можете использовать панель настроек
API, который позволяет приложениям показывать настройки пользователям в контексте своего приложения.
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);
Не все устройства имеют одинаковое имя и класс пакета настроек Wi-Fi, я использую этот код, чтобы открыть страницу настроек Wi-Fi на большинстве устройств Android:
try{
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");
intent.setComponent(cn);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}catch (ActivityNotFoundException ignored){
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
при нажатии кнопки нажмите Listner
startActivityForResult (новое намерение (Settings.ACTION_WIFI_SETTINGS), 0);
Вот фрагмент кода, чтобы открыть страницу настроек Wi-Fi
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");
intent.setComponent(cn);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity( intent);
Я реализовал это в своем приложении следующим образом:
if (Connectivity.isConnected(this)) {
SERVER_IP = Connectivity.getIPAddress(true)
} else {
SERVER_IP = "Not Connected to Network"
Snackbar.make(appRoot, "Not Connected to Network",
Snackbar.LENGTH_INDEFINITE)
.setAction("Open Settings") {
//open network settings
startActivity(Intent(Settings.ACTION_WIFI_SETTINGS))
}.show()
}
}
public static boolean isConnected(Context context) {
NetworkInfo info = Connectivity.getNetworkInfo(context);
return (info != null && info.isConnected());
}