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

时间:2016-07-07 01:17:18

标签: android android-studio runtime-permissions

我尝试实施运行时权限(定位SDK 24),但Android Studio似乎无法识别所有代码。

一切都很好,直到我到达" .READ_CONTACTS"或" .CAMERA。"此外," requestPermissions。"也变红了。我已尝试导入各种内容,例如" android.support.v4.content.ContextCompat"无济于事。

<filter-mapping/>

另外,我是从一个自定义对话框类调用它,但我并不认为这应该是一个问题,因为这些应该是&#34;运行时&#34;权限,对吧?

Example of runtime permissions code turning red

3 个答案:

答案 0 :(得分:1)

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

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

其次,库函数requestPermissions是红色的,因为我是从Dialog调用它,并且需要在它前面添加mActivity,这是我在对话框的构造函数方法中创建并初始化的Activity对象:

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);
        }
    }
}

答案 1 :(得分:0)

答案 2 :(得分:0)

我遇到了同样的错误。这是如何解决的:

只需更改:

Manifest.permission.READ_CONTACTS

amdroid.Manifest.permission.READ_CONTACTS