Android Studio 无法识别运行时权限代码

Android Studio is not recognizing runtime permission code

我正在尝试实现运行时权限(针对 SDK 24),但 Android Studio 似乎无法识别所有代码。

一切正常,直到我到达“.READ_CONTACTS”或“.CAMERA”。此外,"requestPermissions." 也会变成红色。我试过导入各种东西,例如 "android.support.v4.content.ContextCompat" 无济于事。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED){
            yeahReadContacts();
        }else{
            requestPermissions. //This and "READ_CONTACTS" are red.
        }}

此外,我是从自定义对话框 class 调用它的,但我认为这应该不是问题,因为这些应该是 "run-time" 权限,对吧?

Example of runtime permissions code turning red

而不是尝试这个例子。 它非常适合我..

https://learnpainless.com/android/marshmallows/runtime-permission-example-good-practice-real-example

在@Enzokie 的帮助下,我解决了这两个问题。

Manifest.permission.READ_CONTACTS 的 .READ_CONTACTS 部分,因为我以某种方式创建了一个名为 Manifest.java 的文件,并且需要将其重命名为 ManifestNot.java 之类的名称,因为它是与清单库功能冲突。

其次,库函数 requestPermissions 是红色的,因为我是从 Dialog 调用它的,需要在它前面加上 mActivity,这是我在我的对话框的构造方法:

Activity mActivity; //Declared

//The constructor
public AddEntityDialog(Context context) {
    super(context);
    mActivity = (Activity) context;
}

当然,我需要定义 requestPermissions 所需的几个参数,如下所示,但随后我能够编写代码而不会变红。

String[] perms = {"android.permission.READ_CONTACTS"};
int permsRequestCode = 100; //This can be any number

那么最后一行就不再是红色了:

mActivity.requestPermissions(perms, permsRequestCode);

这里有一段很好的代码以获得更好的上下文:

public void readContacts(){

    if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED){
        yeahReadContacts();
    }else{
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            mActivity.requestPermissions(perms, permsRequestCode);
        }
    }
}

我遇到了同样的错误。问题是这样解决的:

只需更改:

Manifest.permission.READ_CONTACTS

amdroid.Manifest.permission.READ_CONTACTS