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://mycoding.iteye.com/blog/1275162


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值