Android requirepermission注释';仅指定一个值,anyOf或allOf';

Android requirepermission注释';仅指定一个值,anyOf或allOf';,android,android-studio,android-support-library,android-lint,android-studio-2.2,Android,Android Studio,Android Support Library,Android Lint,Android Studio 2.2,正在尝试应用中解释的@requirepermission注释 示例显示 如果您需要一组权限中的至少一个,则可以使用anyOf属性: @RequiresPermission(anyOf = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}) public abstract Location getLastKnownLocation(String provid

正在尝试应用中解释的
@requirepermission
注释

示例显示

如果您需要一组权限中的至少一个,则可以使用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();
}
这是一个错误

仅指定值中的一个,anyOf或allOf

我想可能
startScanAndBroadcast()
有一个
allOf
注释,如果递归地解决注释,可能会导致问题,但该方法根本没有注释

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

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

@RequiresPermission(anyOf = { })
private void initiateConnectionProcess() {
这里出了什么问题?

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

经过一些检查,这个错误似乎发生在AndroidStudio 2.2预览2中,而不是在AndroidStudio 2.1.1中

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

看来这是一个错误的过梁。

提交了一个bug报告。

我想你现在已经明白了,但是你必须使用方括号而不是花括号

例如:

@RequiresPermission(anyOf = [ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION])
我使用Kotlin和最新版本的Android Studio。我看到一些人提到它是固定的,但据我所知它不是固定的

Android Studio版本

花括号

方括号

如果您还没有这样做,因为工具团队对错误报告的响应相对较快。@commonware谢谢。在这样做之前,我一直在等待一些“可以/不能复制”的反馈。这似乎是一个错误,但我不确定YetWiw,我可以确认AS 2.1.1对您的示例代码没有问题。@Commonware供您参考,团队从未对我的错误报告作出响应,但它已在studio 2.2预览3中解决:-)