我尝试实施运行时权限(定位SDK 24),但Android Studio似乎无法识别所有代码。
一切都很好,直到我到达" .READ_CONTACTS"或" .CAMERA。"此外," requestPermissions。"也变红了。我已尝试导入各种内容,例如" android.support.v4.content.ContextCompat"无济于事。
<filter-mapping/>
另外,我是从一个自定义对话框类调用它,但我并不认为这应该是一个问题,因为这些应该是&#34;运行时&#34;权限,对吧?
答案 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)
而不是尝试这个例子。 它对我很有用..
https://learnpainless.com/android/marshmallows/runtime-permission-example-good-practice-real-example
答案 2 :(得分:0)
我遇到了同样的错误。这是如何解决的:
只需更改:
Manifest.permission.READ_CONTACTS
到
amdroid.Manifest.permission.READ_CONTACTS