Android提供了Setting.Secure类,官方对这个类的解释是用来获取系统设置属性值,但不允许修改。需要用户通过系统UI或者专门的API来设置属性值。但是在2.2之后,Setting.Secure增加了isLocationProviderEnabled和setLocationProviderEnabled方法,通过测试发现isLocationProviderEnabled方法获取GPS的状态的,但是如果修改GPS的状态:

Settings.Secure.setLocationProviderEnabled( getContentResolver(), LocationManager.GPS_PROVIDER, true);

而且在mainfest文件中添加了权限:


程序任会报错:

: Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS

最终解决办法如下:

Intent gpsIntent = new Intent();
gpsIntent.setClassName("com.android.settings",
"com.android.settings.widget.SettingsAppWidgetProvider");
gpsIntent.addCategory("android.intent.category.ALTERNATIVE");
gpsIntent.setData(Uri.parse("custom:3"));
try {
PendingIntent.getBroadcast(this, 0, gpsIntent, 0).send();
}
catch (CanceledException e) {
e.printStackTrace();
}

这样就达到了修改GPS状态的作用,如果是开发该方法就将GPS关闭,反之依然。

参考:http://www.learningandroid.net/blog/advance/programmable-toggle-gps/

转自:http://mycoding.iteye.com/blog/1275162


更多相关文章

  1. Android(安卓)QuickSetting---手电筒控制
  2. Android:inflate.inflate()方法
  3. Android(安卓)UI编程(1)——九宫格(GridView)
  4. ListView与BaseAdapter优化
  5. Android(安卓)使用OKHttp获取字符串和下载图片
  6. Android(安卓)Force Close 出现的异常原因分析及解决方法
  7. Android对话框AlertDialog.Builder使用方法
  8. android gradle导入依赖的另一个方法
  9. Android——View绘制流程

随机推荐

  1. golang可以写web吗?
  2. golang结构体怎么判断是否为空
  3. golang判断map是否存在key
  4. 2021年放弃Python选择Go的原因
  5. golang接口可以嵌套吗
  6. 运行golang程序提示进程无法启动
  7. golang mysql操作介绍
  8. golang反向代理无法访问
  9. golang项目如何部署到linux服务器
  10. go get命令下载扩展包的几点说明