RequiresPermission注释'只指定value,anyOf或allOf'之一

时间:2016-06-02 11:16:33

标签: android android-studio android-support-library android-lint android-studio-2.2

尝试按照tech-docs中的说明应用@RequiresPermission注释。

示例显示

  

如果您需要一组权限中的至少一个,则可以使用anyOf属性:

@RequiresPermission(anyOf = {
    Manifest.permission.ACCESS_COARSE_LOCATION,
    Manifest.permission.ACCESS_FINE_LOCATION})
public abstract Location getLastKnownLocation(String provider);

我尝试在我的代码中应用它,它执行一些蓝牙扫描:

@RequiresPermission(anyOf = {
        Manifest.permission.ACCESS_COARSE_LOCATION,
        Manifest.permission.ACCESS_FINE_LOCATION})
private void initiateConnectionProcess() {
    startScanAndBroadcast();
}

给出错误

  

仅指定value,anyOf或allOf

之一

我想也许startScanAndBroadcast()有一个allOf注释,如果注释是递归解析的,可能会导致问题,但该方法根本没有注释。

如果方法主体为空,则错误仍然存​​在。

如果我没有列出权限,则错误消失:

@RequiresPermission(anyOf = { })
private void initiateConnectionProcess() {

这里出了什么问题?

2 个答案:

答案 0 :(得分:2)

更新:
在Android Studio 2.2预览3中解决

经过一些检查后,似乎Android Studio 2.2预览2中出现此错误,但Android Studio 2.1.1中却没有。

即使它显示为错误,构建成功并且注释也能正常工作。

看来这是linter中的一个错误 提交了错误报告here

答案 1 :(得分:0)

我假设您现在已经弄清楚了,但是您必须使用方括号而不是大括号。

示例:

@RequiresPermission(anyOf = [ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION])

尽管我使用Kotlin和最新版本的Android Studio。我看到有人提到它是固定的,但据我所知,它不是固定的。

Android Studio版本

enter image description here

弯括号 Curly Brackets Broken

方括号 Square Brackets Working