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 工作室版本
花括号
方括号
正在尝试应用 @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 工作室版本
花括号
方括号