80

通常我通过单击 .在模拟器上获得 Wi-Fi 设置屏幕Settings > Wireless controls > wifi settings。当按下我创建的 Wi-Fi 按钮时,我需要从我的程序直接进入 Wi-Fi 设置屏幕。Contacts, Call Logs 我们可以使用 Intent.setData(android.provider.contacts.......) 来处理。有没有办法从安卓程序打开设置子菜单/菜单?
请给我建议或示例代码。

4

9 回答 9

167

查看可用于启动各种设置屏幕android.provider.Settings的一系列Intent操作(例如,ACTION_WIFI_SETTINGS)。

编辑:添加编码行。

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

于 2010-02-23T14:25:26.650 回答
30

例子

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));
}
于 2011-01-12T12:05:50.863 回答
27

只需要调用带有上下文的意图,试试这个:

startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));
于 2013-09-04T15:47:30.657 回答
11

如果要从 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>

这将在您的设置中显示一个条目,该条目将调用平台的设置活动

于 2011-11-05T18:56:15.127 回答
5

如果您使用的是 Android 10,并且您的目标是让用户打开 WiFi,那么您不必再实际导航到 Wifi 设置屏幕。您可以使用设置面板

一个 API,它允许应用程序在其应用程序的上下文中向用户显示设置。

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);
于 2020-11-05T15:42:30.580 回答
1

这是打开wifi设置页面的代码片段

 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);
于 2016-07-14T16:47:17.960 回答
1

我在我的应用程序中这样实现了它:

     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());
    }
于 2019-02-12T13:55:23.423 回答
1

并非所有设备都具有相同的 Wifi 设置包名称和类,我使用此代码在大多数 Android 设备上打开 wifi 设置页面:

            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));
            }
于 2020-12-21T15:59:01.587 回答
1

在按钮上单击单击Listner

startActivityForResult(new Intent(Settings.ACTION_WIFI_SETTINGS), 0);

于 2018-12-04T06:38:04.370 回答