通常,我通过点击设置 > 无线控制 > WIFI设置
在模拟器上获取Wi-Fi设置屏幕。当按下我创建的Wi-Fi按钮时,我需要直接从我的程序进入Wi-Fi设置屏幕。联系人、通话记录我们可以使用Intent.setData(android.provider.contacts……)来处理。有没有办法从Android程序中打开设置子菜单/菜单?
请给我建议或示例代码。
请查看android.provider.Settings
,其中包含一系列可以用于启动各种设置屏幕(例如ACTION_WIFI_SETTINGS
)的Intent
操作。
编辑:添加代码行。
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.settings.WIFI_SETTINGS
操作可以正常工作。 - DiegoIntent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);
点击按钮监听器
当按钮被点击时,可以使用上述代码来打开WiFi设置界面。startActivityForResult(new Intent(Settings.ACTION_WIFI_SETTINGS), 0);
并非所有设备都具有相同的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));
}
这是打开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);
我在我的应用程序中是这样实现的:
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());
}