Как я могу вызвать экран настроек Wi-Fi из моего приложения с помощью Android - PullRequest
70 голосов
/ 23 февраля 2010

Обычно я получаю экран настройки Wi-Fi на эмуляторе, нажимая на Settings > Wireless controls > wifi settings. Мне нужно перейти непосредственно к экрану настроек Wi-Fi из моей программы при нажатии на кнопку Wi-Fi, которую я создал. Контакты, Журналы вызовов мы можем обрабатывать с помощью Intent.setData (android.provider.contacts ...........). Есть ли способ открыть подменю настроек / меню из программы андроид?
Пожалуйста, дайте мне совет или образец кода по этому вопросу.

Ответы [ 7 ]

151 голосов
/ 23 февраля 2010

Посмотрите на android.provider.Settings для серии Intent действий, которые вы можете использовать для запуска различных экранов настроек (например, ACTION_WIFI_SETTINGS).

РЕДАКТИРОВАТЬ: Добавить строку кодирования.

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

31 голосов
/ 12 января 2011

пример

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));
}
26 голосов
/ 04 сентября 2013

Просто нужно вызвать намерение в контексте попробуйте это:

startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));
10 голосов
/ 05 ноября 2011

Если вы хотите сделать это из 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>

Это покажет запись в ваших настройках, которая будет вызывать активность настройки платформы

1 голос
/ 14 июля 2016

Вот фрагмент кода для открытия страницы настроек 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);
0 голосов
/ 12 февраля 2019

Я реализовал это в своем приложении следующим образом:

     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());
    }
0 голосов
/ 04 декабря 2018

при нажатии кнопки мыши нажать Listner

startActivityForResult (новое намерение (Settings.ACTION_WIFI_SETTINGS), 0);

...