首页 > 代码库 > Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面

Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面

前言:

在使用一些APP时,比如Google Play,在没有连接到网络时,APP会自动跳转到系统自带的wifi连接界面(如下图),在这个界面下连接wifi有一个很好的功能:在没有连上wifi热点时,“下一步”按钮是无法点击,这种体验效果是非常好的,确保了在下一步时,有网络可以使用。


实现步骤:

1. 怎么才能跳转到这个界面?(通过adb logcat查看Google Play跳转时的ACTION,log如下)

I/ActivityManager(  444): START u0 {act=android.net.wifi.PICK_WIFI_NETWORK cmp=com.android.settings/.wifi.WifiPickerActivity (has extras)} from pid 6972

2.有了log就简单了,Intent发出上面这个ACTION就可以啦,代码如下:

Intent intent = new Intent();
intent.setAction("android.net.wifi.PICK_WIFI_NETWORK");
startActivity(intent);

效果如下:


3.擦!怎么少了两个按钮?经过分析settings源码(Settings\src\com\android\settings\wifi\WifiSettings.java和WifiPickerActivity.java)找到了如下信息:

private static final String EXTRA_PREFS_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar";//是否显示button bar,传递值为true的话是显示
private static final String EXTRA_PREFS_SET_NEXT_TEXT = "extra_prefs_set_next_text";//自定义按钮的名字,不传递的话,默认为下一步
private static final String EXTRA_PREFS_SET_BACK_TEXT = "extra_prefs_set_back_text";//自定义按钮的名字,不传递的话,默认为上一步
private static final String EXTRA_ENABLE_NEXT_ON_CONNECT = "wifi_enable_next_on_connect";//是否打开网络连接检测功能(如果连上wifi,则下一步按钮可被点击)
卧槽!原来Intent要携带以上extra信息啊,好吧,修改代码如下:

Intent intent = new Intent();
intent.setAction("android.net.wifi.PICK_WIFI_NETWORK");
intent.putExtra("extra_prefs_show_button_bar", true);
//intent.putExtra("extra_prefs_set_next_text", "完成"); 
//intent.putExtra("extra_prefs_set_back_text", "返回");intent.putExtra("wifi_enable_next_on_connect", true);
startActivity(intent);
跳转后,效果就如开头的那个图片了,一模一样的,哈哈!