RequiresPermission 注释 'only specify one of value, anyOf or allOf'

RequiresPermission annotation 'only specify one of value, anyOf or allOf'

正在尝试应用 @RequiresPermission 注释,如 tech-docs 中所述。

示例显示

If you require at least one from a set of permissions, you can use the anyOf attribute:

@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();
}

这给出了一个错误

Only specify one of value, anyOf or allOf

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

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

如果我不列出权限,错误就会消失:

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

这里出了什么问题?

更新:
在 Android Studio 2.2 预览版 3

中解决

经过一些检查,这个错误似乎出现在 Android Studio 2.2 preview 2 中,但在 Android Studio 2.1.1 中没有出现。

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

看来这是 linter 中的错误。
提交错误报告 here.

我假设你现在已经明白了,但你必须使用方括号而不是大括号。

示例:

@RequiresPermission(anyOf = [ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION])

不过我使用 Kotlin 和最新版本的 Android Studio。我看到有人提到它已修复,但据我所知还没有修复。

Android 工作室版本

花括号

方括号