前言:
在使用一些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);跳转后,效果就如开头的那个图片了,一模一样的,哈哈!