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

Android Studio无法识别运行时权限代码,android,android-studio,runtime-permissions,Android,Android Studio,Runtime Permissions,我试图实现运行时权限(目标是SDK 24),但Android Studio似乎无法识别所有代码 在我到达“.READ_CONTACTS”或“.CAMERA”之前,一切都很好。“requestPermissions”也会变成红色。我尝试过导入各种东西,比如“android.support.v4.content.ContextCompat”,但都没有用 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTA

我试图实现运行时权限(目标是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.
        }}
另外,我在自定义对话框类中调用它,但我认为这不应该是一个问题,因为这些应该是“运行时”权限,对吗


不要尝试这个例子。 它对我很管用


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

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

其次,库函数requestPermissions是红色的,因为我是从对话框中调用它的,需要在它前面加上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


你已经尝试过清理构建了吗?恩佐基-谢谢,但是清理没有帮助。如果任何答案都不起作用,我可以在这一部分使用快速TeamViewer,因为这个问题是不可复制的。恩佐基-谢谢-我不知道什么是TeamViewer,但我愿意提供帮助!好的,我给你发了电子邮件。谢谢!Pawneshwer Gupta-谢谢,但在您的示例中,在btn上设置onClickListener之后的第一行是“getPackageManager()”,当我在示例中键入它时,它会显示为红色,就像Android Studio没有识别它一样。如果没有识别它,请编写Activity.getPackageManager()Pawneshwer Gupta-再次感谢,但这一点也没有得到承认。确认“活动”;但是在它之后是“.getPackageManager()”。而getPackageManager()是检查设备上是否有摄像头硬件可用。如果仍然无法识别,则使用getActivity()。getPackageManager()
amdroid.Manifest.permission.READ_CONTACTS