標籤:android style class blog code java
前言:
在使用一些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);
跳轉後,效果就如開頭的那個圖片了,一模一樣的,哈哈!