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