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,这样它仍然会通知您,这样您就可以确定您正在检查权限。