【发布时间】:2016-05-09 13:34:17
【问题描述】:
我正在通过
获取用户的位置Location location = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
这行代码在一个方法中,在调用这个方法之前,我会检查 Android 运行时权限。仅当用户可以使用该权限时,我才调用此方法。代码运行良好。
问题是 Android Studio 仍然在这一行显示错误,没有识别出我在调用此函数之前已经检查过。
Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`
现在如何删除此警告?我已经检查了权限,不想再次检查只是为了删除这个警告。我试过添加 @SuppressWarnings() 但不知道传递给它的确切字符串。 @SuppressWarnings({"all"}) 有效,但显然不推荐。
如何删除此警告?
编辑 1:这是我的确切代码 -
private void checkPermissions() {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED)
getLocation(); //Method called if I have permission
}
private void getLocation() {
//Android studio shows warning at this line.
Location location = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
}
但是如果我将权限检查放在 getLocation() 方法中,那么警告就会消失。 @SuppressWarnings({"MissingPermission"}) 不起作用。
编辑 2: 我发现抑制警告的唯一方法是 -
在特定代码的顶部添加此注释 -
//noinspection ResourceType
或添加这个 -
@SuppressWarnings({"ResourceType"})
【问题讨论】:
-
如果我在下面编辑的答案有效,请将其标记为已接受。
-
把
@SuppressWarnings("MissingPermission")放在你的函数实现上面
标签: android android-studio suppress-warnings runtime-permissions