设为首页 收藏本站
查看: 858|回复: 0

[经验分享] android获取/更改gps和WIFI状态

[复制链接]

尚未签到

发表于 2015-10-1 10:37:26 | 显示全部楼层 |阅读模式
  一.WIFI状态的获取和更改
  适用于 SDK1.0 , SDK1.5
  1.获取WIFI状态
  方法1:通过WifiManager进行操作
  1WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
  2
  3wifiManager.isWifiEnabled();
  要求权限:android.permission.ACCESS_WIFI_STATE
  方法2:通过Settings.System进行操作
  1Settings.System.getInt(getContentResolver(), Settings.System.WIFI_ON);
  返回 “0″ “1″
  2.通过 WifiManager 更改WIFI状态
  1WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
  2wifiManager.setWifiEnabled( false);
  3wifiManager.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状态的方法依然没有改变(获取方法中做了封装)
  1Settings.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)
  1Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "network");
  2
  3Settings.System.putString(getContentResolver(), Settings.System.LOCATION_PROVIDERS_ALLOWED, "gps");
  SDK1.5报错说:location_providers_allowed has been moved to secure table。
  好,那我们换另外方法试试:我不修改system表,我直接修改secure表总可以了吧!那我们就来试试~!将以上方法改为
  1Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "network");
  2
  3Settings.secure.putString(getContentResolver(), Settings.secure.LOCATION_PROVIDERS_ALLOWED, "gps");
  然后加上权限 android.permission.WRITE_SECURES.
  结果咋样?结果没有报错,却提示 android.permission.WRITE_SECURES 为被授予!android对secure表做了严格的权限控制,一般的程序休想去对她做update 和insert。
  最后无奈,只能提示用户手动开启gps功能。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121232-1-1.html 上篇帖子: 通过Wifi调试Android应用 下篇帖子: milestone wifi不稳定故障处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表