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);

跳转后,效果就如开头的那个图片了,一模一样的,哈哈!

Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面,布布扣,bubuko.com

时间: 2024-11-03 21:34:57

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

Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent.setAction("android.intent.action.CALL_BUTTON"); startActivity(intent); 和 Uri uri = Uri.parse("tel:xxxxxx"); Intent intent = new Intent(

Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开

周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是<获取未安装的APK图标.版本.包名.名称.是否安装.跳转安装.打开> 一.获取APK图标 通常读取APK的图标可以用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable.但实际使用的时候经常只能得到一个默认的图标,根本不是APK的图标. 参考小米开源文件管理器,结合实践,代码如下: /* * 采用了新的办法获取APK图标,之前的失败是因为andro

Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下.1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)); startActivity(intentPhone); 2)跳转到拨号界面 Intent intent = newIntent(Intent.ACTION_DIAL,Uri.pars

Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: [java] view plaincopy Intent intent =new Intent(); intent.setAction("android.intent.action.CALL_BUTTON"); startActivity(intent); 和 [java] view plaincopy Uri uri = Uri.parse("te

Android(java)学习笔记96:如何改变spinner系统自带的字体和颜色

1.首先我们要知道spinner系统自带字体和颜色本质: 原生的Spring 控件是无法更改字体和颜色的... 从下面的代码可以看出...红色的标注显示使用的是Android默认的布局.. 1 Spinner s1 = (Spinner) findViewById(R.id.spinner1); 2 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 3 this, R.array.colors, andr

Android菜鸟笔记- 获取未安装的APK图标、版本号、包名、名称、是否安装、安装、打开

周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是<获取未安装的APK图标.版本号.包名.名称.是否安装.跳转安装.打开> 一.获取APK图标 通常读取APK的图标能够用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable.但实际使用的时候常常仅仅能得到一个默认的图标.根本不是APK的图标. 參考小米开源文件管理器,结合实践,代码例如以下: /* * 採用了新的办法获取APK图标.之前的失败是由于a

Android菜鸟笔记2-Activity生命周期与Log

一:Acticity Activity是Android程序的4大组件之一. Activity是Android程序的表示层.程序的每一个显示屏幕就是一个Activity. 学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件:或者你可以把它理解成一个Windows的窗口. Activity是Android程序的显示层,每一个显示窗口都是一个Activity:可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子:就譬如一个JSP页面,它本身并没有显示

Android菜鸟笔记3-Activity切换

android中每个activity通常描述了一个屏幕上的所有画面(窗口级别的activity除外),因此通常手机屏幕两个界面(准确些说是整个屏幕)之间的切换就涉及到了activity的切换. 假定有两个activity,分别是Activity01和Activity02,现在Activity01页面中有一个按钮,点下之后会切换到Activity02.并且在Activity切换时,Activity01给Activity02传递了一个参数.(intent可以在切换Activity时使用,且能传递数据

【XFeng安卓开发笔记】edittext中怎样禁止系统自带键盘弹出但光标还在

网上又不少方法,均告失败,最终找到以下的方法: // 隐藏系统键盘 public void hideSoftInputMethod(EditText ed) { getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); int currentVersion = android.os.Build.VERSION.SDK_INT; String methodName = null