我是Android编程的新手,非常需要你的帮助。
我试图通过代码禁用GPS Settings.Secure.setLocationProviderEnabled(getContentResolver(),LocationManager.GPS_PROVIDER,false);
还将AndroidManifest.xml文件中的权限设置为
。 。 。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
但在我运行应用程序时,它说 不授予android.permission.WRITE_SECURE_SETTINGS权限以包..... [/ p>
我的应用程序崩溃说
ava.lang.SecurityException:权限拒绝:写入安全设置需要android.permission.WRITE_SECURE_SETTINGS
提前获得帮助:)答案 0 :(得分:0)
您可以使用
启动GPSLocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new CTLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1.0f, locationListener);
停止使用gps提供程序
locationManager.removeUpdates(locationListener);
答案 1 :(得分:0)
如果你试图实际禁用GPS芯片,那么我对android系统的理解是这是不可能的。您必须通过设置菜单要求用户启用或禁用GPS。
请参阅此问题:How can I get the dreaded WRITE_SECURE_SETTINGS permission for my android app?
过去有可能和系统级应用程序可以使用该权限,普通应用程序无法利用它。
答案 2 :(得分:0)
我猜您的用户抱怨您的应用可以看到他们的位置。
要在安装应用时不显示该消息,您必须删除:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
您也可以尝试使用getLastKnownLocation以节省电量。它不会打开GPS并可能使用网络单元数据(COARSE_LOCATION)。
public Location getLocation() {
if (contextReference == null) {
return null;
}
Context context = contextReference.get();
if (context == null) {
return null;
}
Location location = null;
if (context
.checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationManager lm = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} else if (context
.checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationManager lm = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
return location;
}