android获取/更改gps和WIFI状态
2015-08-13 16:44
435 查看
一.WIFI状态的获取和更改
适用于 SDK1.0 , SDK1.5
1.获取WIFI状态
方法1:通过WifiManager进行操作
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.isWifiEnabled();
要求权限:android.permission.ACCESS_WIFI_STATE
方法2:通过Settings.System进行操作
Settings.System.getInt(getContentResolver(), Settings.System.WIFI_ON);
返回 “0″ “1″
2.通过 WifiManager 更改WIFI状态
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled( false );
wifiManager.setWifiEnabled( true );
二.gps状态的获取和更改
android GPS 状态的修改。但是SDK1.5之后就出现了很多诡异的地方,原来在SDK1.1以下的版本中开发的有关GPS开关的应用都出现了问题。
问题的根源:SDK1.5 把系统数据库中GPS开关的阀值从 system 表移动到了secure 表。
扩展:
1、通过adb shell 进入系统文件系统,cd data/data/com.android.providers.settings/databases 。然后进入settings.db 数据库中。输入 .schema查看所有表结构,你会发现有system 和 secure 表。
2、GPS是由location_providers_allowed 来控制的。当记录值为 location_providers_allowed|gps 表示仅GPS定位。(红色标记处为:”network” 仅基站定位 ;“gps” 仅GPS定位 ; “network,gps” 基站、GPS都开放;” “ 关闭定位)
当然获取GPS状态的方法依然没有改变(获取方法中做了封装)
Settings.System.getString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED);
要在Activity或者service中运行。当然别忘记了权限要求:android.permission.WRITE_SETTINGS
返回String :”network” 仅基站定位 ;“gps” 仅GPS定位 ; “network,gps” 基站、GPS都开放;” “ 关闭定位
修改的时候出漏子了!SDK1.0中的方法可用,但在SDK1.5中报错:(当然,权限还是要加:android.permission.WRITE_SETTINGS)
Settings.System.putString(getContentResolver(),Settings.System.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED,"gps");
SDK1.5报错说:location_providers_allowed has been moved to secure table。
好,那我们换另外方法试试:我不修改system表,我直接修改secure表总可以了吧!那我们就来试试~!将以上方法改为
Settings.secure.putString(getContentResolver(),Settings.secure.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "gps");
然后加上权限 android.permission.WRITE_SECURES.
结果咋样?结果没有报错,却提示 android.permission.WRITE_SECURES 为被授予!android对secure表做了严格的权限控制,一般的程序休想去对她做update 和insert。闷了···这个问题搁浅了。
适用于 SDK1.0 , SDK1.5
1.获取WIFI状态
方法1:通过WifiManager进行操作
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.isWifiEnabled();
要求权限:android.permission.ACCESS_WIFI_STATE
方法2:通过Settings.System进行操作
Settings.System.getInt(getContentResolver(), Settings.System.WIFI_ON);
返回 “0″ “1″
2.通过 WifiManager 更改WIFI状态
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled( false );
wifiManager.setWifiEnabled( true );
二.gps状态的获取和更改
android GPS 状态的修改。但是SDK1.5之后就出现了很多诡异的地方,原来在SDK1.1以下的版本中开发的有关GPS开关的应用都出现了问题。
问题的根源:SDK1.5 把系统数据库中GPS开关的阀值从 system 表移动到了secure 表。
扩展:
1、通过adb shell 进入系统文件系统,cd data/data/com.android.providers.settings/databases 。然后进入settings.db 数据库中。输入 .schema查看所有表结构,你会发现有system 和 secure 表。
2、GPS是由location_providers_allowed 来控制的。当记录值为 location_providers_allowed|gps 表示仅GPS定位。(红色标记处为:”network” 仅基站定位 ;“gps” 仅GPS定位 ; “network,gps” 基站、GPS都开放;” “ 关闭定位)
当然获取GPS状态的方法依然没有改变(获取方法中做了封装)
Settings.System.getString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED);
要在Activity或者service中运行。当然别忘记了权限要求:android.permission.WRITE_SETTINGS
返回String :”network” 仅基站定位 ;“gps” 仅GPS定位 ; “network,gps” 基站、GPS都开放;” “ 关闭定位
修改的时候出漏子了!SDK1.0中的方法可用,但在SDK1.5中报错:(当然,权限还是要加:android.permission.WRITE_SETTINGS)
Settings.System.putString(getContentResolver(),Settings.System.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED,"gps");
SDK1.5报错说:location_providers_allowed has been moved to secure table。
好,那我们换另外方法试试:我不修改system表,我直接修改secure表总可以了吧!那我们就来试试~!将以上方法改为
Settings.secure.putString(getContentResolver(),Settings.secure.LOCATION_PROVIDERS_ALLOWED, "network");
Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "gps");
然后加上权限 android.permission.WRITE_SECURES.
结果咋样?结果没有报错,却提示 android.permission.WRITE_SECURES 为被授予!android对secure表做了严格的权限控制,一般的程序休想去对她做update 和insert。闷了···这个问题搁浅了。
相关文章推荐
- Android:ViewDragHelper学习
- Android中BaseAdapter的理解
- [置顶] android源码编译apk集成第三方so库
- android视图切换库SwitchLayout的使用
- android的recovery模式
- Android应用开发原理之从View源码挖掘View中的事件传递机制
- Android笔记(十二)AndroidManiFest.xml
- Android友盟增量更新
- Android友盟增量更新
- android 应用在SD卡创建应用的文件夹
- 浅析android中handler与Message(二)+源码查看器
- Android EditText限制小数点输入两位
- 如何安装Android Studio
- 获取android 内置与外置SD卡路径及可用空间
- android回调的理解------异步任务回调接口
- android自定义View组件封装jar包
- Android动画
- hdoj.5099 Comparison of Android versions【字符串处理,水题】 2015/08/13
- Android API Demo系列之---播放Gif动画的类Movie
- Android(java)学习笔记149:AsyncTask(异步任务)和Handler(消息机制)