if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // Permission is not granted // Request the permission ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.READ_CONTACTS }, MY_PERMISSIONS_REQUEST_READ_CONTACTS);} else { // Permission has already been granted // Do the task}这里面的 this标红
时间: 2024-03-01 14:54:11 浏览: 135
如果你在非 Activity 或 Fragment 的类中使用上下文对象,`this` 会标红。解决这个问题的方法是将上下文对象传递给该类或使用适当的上下文。
在你提供的代码中,如果它不是在 Activity 或 Fragment 中,`this` 将无法识别当前上下文。你可以将上下文对象传递给该类,或使用适当的上下文对象,例如:
```java
public class MyContactsClass {
private Context context;
public MyContactsClass(Context context) {
this.context = context;
}
public void checkContactsPermission() {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context,
new String[] { Manifest.permission.READ_CONTACTS },
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
} else {
// Permission has already been granted
// Do the task
}
}
}
```
在上面的代码中,我们将上下文对象保存在 `context` 变量中,并在 `checkContactsPermission()` 方法中使用它来检查 `READ_CONTACTS` 权限。如果权限未授予,我们使用 `ActivityCompat.requestPermissions()` 方法请求该权限。如果权限已经授予,我们可以继续执行相应的任务。注意,在请求权限时,我们将上下文对象强制转换为 `Activity`,因为 `ActivityCompat.requestPermissions()` 方法需要一个 `Activity` 对象。
阅读全文