Android 无法识别权限检查
Android permission check not recognized
我正在尝试访问 Android 中的 FusedLocationApi
23.
我创建了一个 PermissionUtils
class,它有一些方法来检查是否授予权限。
public class PermissionUtils {
private static abstract class AbstractPermission {
public static boolean check(Context context, String permission) {
return (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED);
}
/**
* Requests the permission. If a rationale with an additional explanation should
* be shown to the user, displays a dialog that triggers the request.
*/
public static void request(Activity activity, int requestId, String permission) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
// TODO - Display a dialog with rationale.
ActivityCompat.requestPermissions(activity, new String[]{permission}, requestId);
} else {
// Location permission has not been granted yet, request it.
ActivityCompat.requestPermissions(activity, new String[]{permission}, requestId);
}
}
}
public static final class FineLocation {
private static final String permission = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String permissionCellTowerPrecision = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int requestId = PermissionCodes.LOCATION_PERMISSION_REQUEST_CODE;
public static boolean check(Context context) {
return AbstractPermission.check(context, permission) && AbstractPermission.check(context, permissionCellTowerPrecision);
}
public static void request(Activity activity) {
AbstractPermission.request(activity, requestId, permission);
}
}
}
在片段中,我调用 FineLocation.check()
。
protected void startLocationUpdates() {
if (PermissionUtils.FineLocation.check(getActivity())) {
PermissionUtils.FineLocation.request(getActivity());
} else {
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
}
问题是我仍然收到错误:Call requires permission which may be rejected by the user
。
如何告诉检查员我已经检查了权限?
所以,问题是 Inspector 没有识别出我正在检查权限。
代码编译正常,应用程序可以安装在 USB 设备或模拟器上。
您可以通过以下方式切换检查的严重性:
Settings > Editor > Inspections > Android > Constant and Resource Type Mismatches
严重性默认为 error
。您可以将其设置为warning
,这样它仍然会通知您,这样您就可以确定您正在检查权限。
我正在尝试访问 Android 中的 FusedLocationApi
23.
我创建了一个 PermissionUtils
class,它有一些方法来检查是否授予权限。
public class PermissionUtils {
private static abstract class AbstractPermission {
public static boolean check(Context context, String permission) {
return (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED);
}
/**
* Requests the permission. If a rationale with an additional explanation should
* be shown to the user, displays a dialog that triggers the request.
*/
public static void request(Activity activity, int requestId, String permission) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
// TODO - Display a dialog with rationale.
ActivityCompat.requestPermissions(activity, new String[]{permission}, requestId);
} else {
// Location permission has not been granted yet, request it.
ActivityCompat.requestPermissions(activity, new String[]{permission}, requestId);
}
}
}
public static final class FineLocation {
private static final String permission = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String permissionCellTowerPrecision = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int requestId = PermissionCodes.LOCATION_PERMISSION_REQUEST_CODE;
public static boolean check(Context context) {
return AbstractPermission.check(context, permission) && AbstractPermission.check(context, permissionCellTowerPrecision);
}
public static void request(Activity activity) {
AbstractPermission.request(activity, requestId, permission);
}
}
}
在片段中,我调用 FineLocation.check()
。
protected void startLocationUpdates() {
if (PermissionUtils.FineLocation.check(getActivity())) {
PermissionUtils.FineLocation.request(getActivity());
} else {
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
}
问题是我仍然收到错误:Call requires permission which may be rejected by the user
。
如何告诉检查员我已经检查了权限?
所以,问题是 Inspector 没有识别出我正在检查权限。 代码编译正常,应用程序可以安装在 USB 设备或模拟器上。
您可以通过以下方式切换检查的严重性:
Settings > Editor > Inspections > Android > Constant and Resource Type Mismatches
严重性默认为 error
。您可以将其设置为warning
,这样它仍然会通知您,这样您就可以确定您正在检查权限。