检查方法中的 Android 权限
Check Android Permissions in a Method
这是我的代码,它工作得很好。
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
}
但我不喜欢每次检查都写这么大的代码,想将它委托给我的实用程序中的一个方法 class。
if (Utils.hasMapLocationPermissions(getActivity())) {
mMap.setMyLocationEnabled(true);
}
但是 setMyLocationEnabled
有注释 @RequiresPermission
因此我不能将它委托给一个方法,因为 lint 和 editor 将其显示为 错误 。
是否有一些注释可以写在我的实用程序方法上并抑制 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
}
或者:
if (Utils.hasMapLocationPermissions(getActivity())) {
//noinspection MissingPermission
mMap.setMyLocationEnabled(true);
}
您可以重命名您的方法,例如checkLocationPermission(Activity activity)
。我发现您的方法名称必须以“check”开头并以“Permission”结尾才能传递 Lint 警告。
例如:
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;
}
这是我的代码,它工作得很好。
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
}
但我不喜欢每次检查都写这么大的代码,想将它委托给我的实用程序中的一个方法 class。
if (Utils.hasMapLocationPermissions(getActivity())) {
mMap.setMyLocationEnabled(true);
}
但是 setMyLocationEnabled
有注释 @RequiresPermission
因此我不能将它委托给一个方法,因为 lint 和 editor 将其显示为 错误 。
是否有一些注释可以写在我的实用程序方法上并抑制 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
}
或者:
if (Utils.hasMapLocationPermissions(getActivity())) {
//noinspection MissingPermission
mMap.setMyLocationEnabled(true);
}
您可以重命名您的方法,例如checkLocationPermission(Activity activity)
。我发现您的方法名称必须以“check”开头并以“Permission”结尾才能传递 Lint 警告。
例如:
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;
}