android获取/更改gps和WIFI状态
一.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功能。
android获取/更改gps和WIFI状态的更多相关文章
- Android获取当前连接的wifi名称
首先AndroidMainfest.xml文件里加入权限: <uses-permission android:name="android.permission.ACCESS_NETWO ...
- 朝花夕拾-android 获取当前手机的内存卡状态和网络连接状态
序言: 人的一生是一个选择的过程. 如果脚下只有一条路,只要一往无前即可,不用担心走错.即使是错也别无它法.然而人是不安分的,况且安于独木桥的行走,其目的地由于没有蜿蜒曲折去遮挡行路人的视线,一往无前 ...
- android获取系统wifi状态等
WIFI 获取WIFI状态 WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); ...
- Android获取当前网络状态
Android获取当前网络状态 效果图 有网络 没有网络 源码 下载地址(Android Studio工程):http://download.csdn.net/detail/q4878802/9052 ...
- Android获取网络状态
Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http ...
- android 获取GPS定位
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- Android中通过GPS或NetWork获取当前位置的经纬度
今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...
- Android 获取WIFI MAC地址的方法
1. 经常用法,调用Android的API:WifiManager <uses-permission android:name="android.permission.ACCESS_W ...
- Android获取wifi MAC,关闭的wifi不能获取
最近一直在尝试着在Android上通过ndk用C++获取本机MAC地址,但是用ioctl(SIOCGIFHWADDR)时,一直返回值小于0,即获取不到接口信息.刚开始我以为是自己漏掉了哪些访问权限,所 ...
随机推荐
- OSX学习01之更新头像
前不久在官网上守株待兔,买了一个官翻版865,其实最想买294的,可是米不足啊——所以,在同时下了865和293的订单,并纠结了一天后,确定了865,剩余的钱够一个Mac mini了,如果不买也可以日 ...
- Javascript模块化开发-轻巧自制
Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展 ...
- 一.JSP开发的工具下载与环境搭建
JSP技术的强势: (1)一次编写,到处运行.在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改. (2)系统的多平台支持.基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统 ...
- leetcode:Integer to Roman(整数转化为罗马数字)
Question: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the rang ...
- DouNet学习_代码生成器
string conn = "Data Source={0};Initial Catalog={1};User Id={2};Password={3}"; //点击链接 priva ...
- 数往知来 SQL SERVER 基本语法<七>
sqlserver学习_01 启动数据库 开始->cmd->进入控制台 sqlcmd->-S .\sqlexpress 1> 如果出现表示数据库"sqle ...
- MATLAB Coder从MATLAB生成C/C++代码步骤
MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤: 准备用于产生代码的MATLAB算法: 检查MATLAB代 ...
- SandDock 应用示例
直接上代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...
- [转]caffe+Ubuntu14.0.4 64bit 环境配置说明(无CUDA,caffe在CPU下运行) --for --Amd
caffe是一个简洁高效的深度学习框架,具体介绍可以看这里,caffe环境配置过程可以参考这里,我在搭建环境时搜集了许多资料,这里整理了一下,介绍一下caffe在无CUDA的环境下如何配置. 1. 安 ...
- 在Cubieboard上关闭irqbalance服务避免内存泄漏
十一一个假期回来,顺手看了看自己的cubieboard运行状态怎么样 aria2正常: btsync正常: samba正常: 很好, 顺手htop一下,已经开机了13天了,CPU使用率4%,内存使用率 ...