检查方法中的Android权限
这是我的代码,它工作得非常好 但是我不喜欢每次检查都有这么大的代码,我想把它委托给我的实用程序类中的一个方法检查方法中的Android权限,android,annotations,coding-style,lint,error-suppression,Android,Annotations,Coding Style,Lint,Error Suppression,这是我的代码,它工作得非常好 但是我不喜欢每次检查都有这么大的代码,我想把它委托给我的实用程序类中的一个方法 if (Utils.hasMapLocationPermissions(getActivity())) { mMap.setMyLocationEnabled(true); } 但是setMyLocationEnabled有注释@requirePermission,因此我不能将其委托给方法,因为lint和编辑器将其显示为错误 在我的实用方法和抑制lint上是否有一些注释 像这样
if (Utils.hasMapLocationPermissions(getActivity())) {
mMap.setMyLocationEnabled(true);
}
但是setMyLocationEnabled
有注释@requirePermission
,因此我不能将其委托给方法,因为lint和编辑器将其显示为错误
在我的实用方法和抑制lint上是否有一些注释
像这样的
@ChecksPermission
public boolean hasMapLocationPermissions(Activity activity) {
return // my checking logic..
}
通过使用
@SuppressWarnings(“MissingPermission”)
注释方法,可以在编辑器和lint报告中抑制此错误,也可以通过将//noinspection MissingPermission
放在该行上方,仅对一条语句抑制此错误
例如:
@SuppressWarnings("MissingPermission")
public boolean hasMapLocationPermissions(Activity activity) {
// your checking logic
}
public static boolean checkLocationPermission(Context context) {
return ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
或:
您可以将方法重命名为
checkLocationPermission(活动)
。我发现,要传递Lint警告,方法的名称必须以“check”开头,以“Permission”结尾
例如:
@SuppressWarnings("MissingPermission")
public boolean hasMapLocationPermissions(Activity activity) {
// your checking logic
}
public static boolean checkLocationPermission(Context context) {
return ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
尝试将
setMyLocationEnabled
放入Try catch
中并处理SecurityException
。应该在没有注释的情况下工作。代码仍然很大,看起来很难看。我想用简洁的小代码解决。好的答案,会等几天,如果这是最好的答案,我会给你赏金。谢谢,回答得很好!我就知道有这样的事。非常感谢。现在我的代码看起来很棒,而且也没有lint警告。哈哈,用这种方式破解lint对我来说真的很好,只有checkPermission()
方法名起作用。