Mad*_*bar 8 android android-location
我正在使用android studio和compileSdkVersion是23,因为我使用下面的代码
if(locationManager != null){
locationManager.removeUpdates(GPSListener.this);
}
Run Code Online (Sandbox Code Playgroud)
停止gps更新GPS Listener是一个实现LocationListener的类.
但是在removeUpdates行中我得到了lint警告
调用需要用户可能拒绝的权限:代码应明确检查权限是否可用(带
checkPermission
)或处理潜力SecurityException
我没有得到上面代码中的问题.需要在清单文件中添加任何额外的权限吗?
问候.
Tim*_*Tim 26
从SDK 23开始,您应该/需要在调用Location API功能之前检查权限.以下是如何执行此操作的示例:
if (locationManager != null) {
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.removeUpdates(GPSListener.this);
}
}
Run Code Online (Sandbox Code Playgroud)
有checkSelfPermission()
,这是检查'你'(这个应用程序)是否具有正确的权限.还有checkPermission()
,它是检查另一个进程是否具有正确的权限.
笔记
ContextCompat.checkSelfPermission()
(感谢JerryBrady)Rod*_*rba 14
我无法使用checkSelfPermission()
,因为我的min API是14和23是必需的.知道了,你也可以try
来catch
一个SecurityException
.
例:
try {
locationManager.removeUpdates(GPSListener.this);
} catch (SecurityException e) {
Log.e("PERMISSION_EXCEPTION","PERMISSION_NOT_GRANTED");
}
Run Code Online (Sandbox Code Playgroud)
小智 5
要添加到Jerry Brady关于ContextCompat的评论,这是<23的完整代码:
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30418 次 |
最近记录: |