4

尝试按照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();
}

这给出了一个错误

仅指定值之一,anyOf 或 allOf

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

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

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

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

这里出了什么问题?

4

2 回答 2

2

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

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

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

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

于 2016-06-02T11:28:06.857 回答
1

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

例子:

@RequiresPermission(anyOf = [ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION])

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

安卓工作室版

在此处输入图像描述

大括号 大括号坏了

方括号 方括号工作

于 2020-07-28T03:44:51.003 回答