gpt4 book ai didi

android - "gps"位置提供者需要android 6.0 的ACCESS_FINE_LOCATION 权限

转载 作者:IT老高 更新时间:2023-10-28 22:12:26 30 4
gpt4 key购买 nike

在 android list 文件中,我添加了以下 gps 访问位置的权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我正在使用位置管理器类进行如下的位置更新

 private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES,
this
);

但是上面一行给出了一个异常(exception)说明

"gps" location provider requires ACCESS_FINE_LOCATION permission

这件事只发生在 targetSDKVersion 23(即 android 6.0)上,我也在 android 5.1 中测试过,效果很好。

请帮忙!!。提前致谢。

最佳答案

从 6.0 开始,某些权限被视为“危险”(FINE_LOCATION 就是其中之一)。

为了保护用户,他们必须在运行时获得授权,以便用户知道这是否与他的行为有关。

要做到这一点:

 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);

它会显示一个对话框,用户可以在其中选择是否自动让您的应用使用位置信息。

然后通过这个函数得到用户的答案:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}

如果用户接受它一次,那么您的应用程序会记住它,您将不再需要发送此 DialogBox。请注意,如果他决定,用户可以稍后禁用它。然后在请求位置之前,您必须测试是否仍然授予权限:

public boolean checkLocationPermission()
{
String permission = "android.permission.ACCESS_FINE_LOCATION";
int res = this.checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}

这一切都在 Android 文档中进行了解释(onRequestPermissionsResult 也来自那里):http://developer.android.com/training/permissions/requesting.html

关于android - "gps"位置提供者需要android 6.0 的ACCESS_FINE_LOCATION 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865445/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com