当前位置: 代码迷 >> Android >> Android 利用程序兑现GPS的打开或关闭
  详细解决方案

Android 利用程序兑现GPS的打开或关闭

热度:70   发布时间:2016-05-01 19:24:50.0
Android 利用程序实现GPS的打开或关闭

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

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

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

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>?
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

程序任会报错:

?

: 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://bigcat.easymorse.com/?p=1549

1 楼 qiuyouzhi 2012-05-09  
你用真机测试过么
2 楼 zhouxiaoli521 2012-05-09  
qiuyouzhi 写道
你用真机测试过么

  忘记了 好像没有
3 楼 nobcdz 2012-05-13  
Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS                               需要取得root权限
4 楼 zhouxiaoli521 2012-05-14  
nobcdz 写道
Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS                               需要取得root权限

:D  多谢指正
简单查了一下 2.2以上能用 否则 root
  相关解决方案