Android 在代码中设置打开关闭GPS不必用户操作

本文介绍了如何在Android应用中编程实现开启或关闭GPS定位功能,无需用户手动干预,详细探讨了相关API的使用和权限配置。
摘要由CSDN通过智能技术生成

手机应用中最酷的可能就是位置服务相关的了,如何读取GPS信息,在官方文档上有相当详细的说明,后面如果有机会,我也会专门写例子来介绍(教程已完成,请参见:教程:实现Android的不同精度的定位(基于网络和GPS))。但今天,我们先来看下如何以编程的方式来开启关闭GPS
官方的API中,android.provider.Settings.Secure类有2个静态方法:
public static final void setLocationProviderEnabled(ContentResolver cr, String provider, boolean enabled)

public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider)
不过遗憾的是,这2个方法都注明了从API Level 8(即Android2.2)才开始提供,那么在2.2之前又该如何编程实现GPS的开关呢?


山重水复疑无路

首先,我们要知道,Android系统的设置画面中就可以进行GPS的开关,那么它是如何实现的呢?
由于我的机器上的android source是2.3版本的,所以直接启动了一个2.1的模拟器,用adbpull将Settings.apk抓下来,反编译之后,在SecuritySettings类中找到如下代码:
package,com.android.settings.SecuritySettings.java

CheckBoxPreference localCheckBoxPreference3 = this.mGps;     

if (paramPreference ==localCheckBoxPreference3)     {       

ContentResolver localContentResolver3 = getContentResolver();      

boolean bool6= this.mGps.isChecked();     

 Settings.Secure.setLocationProviderEnabled(localContentResolver3, "gps", bool6);      

continue;     }


可以看到2.1系统中已经存在有Settings.Secure.setLocationProviderEnabled方法了,只是该方法没有开放而已,事实上读过Android源码的人都对很反感吧,看得到,摸不到!
既然Setting画面中的用法,我们不能使用,那么再换1种方法,我们去看一下Settings.Secure.setLocationProviderEnabled的写法,然后直接套用。
这次,我们直接去看Android 2.3的源码,找到Setting.java之后,找到相关的方法,代码如下:
core, android.provider.Setting.java
 

       public static final void</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值