Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 两个IDEA项目之间的不同检查行为_Android_Intellij Idea_Android Permissions_Code Inspection - Fatal编程技术网

Android 两个IDEA项目之间的不同检查行为

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

我在几天前在IDEA 2016.3.3中创建的一个项目中遇到了一个奇怪的检查问题,当我遇到这个问题时,我将IDEA 2016.3.3升级到了2016.3.5。即使在使缓存无效并重新启动之后,该问题仍然存在于旧项目中。我无法将其复制到2016年3月5日创建的新项目中

两个项目都有相同的
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

我原本以为这是一种倒退,但这个问题更一般。不级联危险权限可能是故意的,但我将其报告为错误,因为如果用户从正在运行的应用程序中撤销权限