Android 两个IDEA项目之间的不同检查行为
我在几天前在IDEA 2016.3.3中创建的一个项目中遇到了一个奇怪的检查问题,当我遇到这个问题时,我将IDEA 2016.3.3升级到了2016.3.5。即使在使缓存无效并重新启动之后,该问题仍然存在于旧项目中。我无法将其复制到2016年3月5日创建的新项目中 两个项目都有相同的Android 两个IDEA项目之间的不同检查行为,android,intellij-idea,android-permissions,code-inspection,Android,Intellij Idea,Android Permissions,Code Inspection,我在几天前在IDEA 2016.3.3中创建的一个项目中遇到了一个奇怪的检查问题,当我遇到这个问题时,我将IDEA 2016.3.3升级到了2016.3.5。即使在使缓存无效并重新启动之后,该问题仍然存在于旧项目中。我无法将其复制到2016年3月5日创建的新项目中 两个项目都有相同的minSdkVersion,targetSdkVersion,compileSdkVersion和buildToolsVersion还有什么会导致检查行为的差异? 我在两个项目中创建了一个相同的类: public c
minSdkVersion
,targetSdkVersion
,compileSdkVersion
和buildToolsVersion
还有什么会导致检查行为的差异?
我在两个项目中创建了一个相同的类:
public class PermissionWeirdness {
public void foo() {
bar();
baz();
}
@RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
private void bar() {}
@RequiresPermission(Manifest.permission.GET_ACCOUNTS)
private void baz() {}
}
和ACCESS\u FINE\u LOCATION
都属于“危险”权限GET\u ACCOUNTS
- 在这两个项目中,正如预期的那样,调用
和bar()
时,警告出现在baz()
中foo()
- 在较新的项目中,两个警告的形式相同: PermissionWeirdness.bar缺少所需的权限:android.permission.ACCESS\u FINE\u位置
- 在旧项目中,与
相关的警告具有完全不同的消息。工具提示文本中包含文字反标记,在此处解释为代码标记: 调用需要用户可能拒绝的权限:代码应明确检查权限是否可用(使用ACCESS\u FINE\u LOCATION
),或明确处理潜在的checkPermission
SecurityException
- 在这两个项目中,可以通过向
添加适当的foo()
注释来消除形式较短的警告@requirepermission
- 在较旧的项目中,无法以这种方式消除神秘的较长警告
@requirepermission
我原本以为这是一种倒退,但这个问题更一般。不级联危险权限可能是故意的,但我将其报告为错误,因为如果用户从正在运行的应用程序中撤销权限