如何编程实现开启或关闭gps
在Activity中添加如下方法:
[java] view
plaincopyprint?
private void toggleGPS() {
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();
}
}
private void toggleGPS() {
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();
}
}
这个方法是1个纯开关,如果当前是开启的,那么就会关闭它,反之亦然。
检查GPS开关状态
那么,如何查看当前的GPS开关状态呢?可以用上面提到的反射方式调用isLocationProviderEnabled,代码片断如下:
[java] view
plaincopyprint?
secureClass = cl。
loadClass("android。provider。Settings$Secure");
isMethod = secureClass。getMethod("isLocationProviderEnabled",
ContentResolver。
class, String。class);
Boolean ret = (Boolean) isMethod。invoke(secureClass, this
。getContentResolver(), "gps");
secureClass = cl。
loadClass("android。provider。Settings$Secure");
isMethod = secureClass。getMethod("isLocationProviderEnabled",
ContentResolver。
class, String。class);
Boolean ret = (Boolean) isMethod。invoke(secureClass, this
。getContentResolver(), "gps");
也可以直接用下面的方法:
[java] view
plaincopyprint?
private void isGPSEnable() {
/* 用Setting。
System来读取也可以,只是这是更旧的用法
String str = Settings。System。getString(getContentResolver(),
Settings。Secure。
LOCATION_PROVIDERS_ALLOWED);
*/
String str = Settings。Secure。getString(getContentResolver(),
Settings。
Secure。LOCATION_PROVIDERS_ALLOWED);
Log。v("GPS", str);
if (str != null) {
return str。
contains("gps");
}
else{
return false;
}
}
private void isGPSEnable() {
/* 用Setting。
System来读取也可以,只是这是更旧的用法
String str = Settings。System。getString(getContentResolver(),
Settings。Secure。
LOCATION_PROVIDERS_ALLOWED);
*/
String str = Settings。Secure。getString(getContentResolver(),
Settings。
Secure。LOCATION_PROVIDERS_ALLOWED);
Log。v("GPS", str);
if (str != null) {
return str。
contains("gps");
}
else{
return false;
}
}
这2种方法的原理都是一样的,方法2其实也就是isLocationProviderEnabled实际调用的代码,只是Google未对读取操作进行权限限制。
答:应该是可以通过设置来实现共享,可按以下方法设置一下~` 解决方法: 1、打开防火墙,在界面的右下角处,把安全级别设置成“中等”; 2、点击“设置――>详细设置”...详情>>