ContextCompat.checkSelfPermission例子
时间: 2023-12-13 20:03:01 浏览: 230
当我们使用ContextCompat.checkSelfPermission方法时,我们通常会检查应用程序是否具有特定权限。以下是一个示例:
```java
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// 如果应用程序没有读取联系人权限,则请求权限
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
PERMISSION_REQUEST_CODE);
} else {
// 应用程序已经有读取联系人权限,执行相应的操作
performContactReading();
}
} else {
// 在低于Android 6.0的设备上,无需检查权限,直接执行相应的操作
performContactReading();
}
}
private void performContactReading() {
// 执行读取联系人的操作
// ...
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了读取联系人的权限,执行相应的操作
performContactReading();
} else {
// 用户拒绝了读取联系人的权限,可以根据需要采取适当的措施
}
}
}
}
```
在上述示例中,我们首先使用ContextCompat.checkSelfPermission方法检查应用程序是否具有读取联系人的权限。如果没有该权限,则使用requestPermissions方法请求该权限。在用户授予权限或拒绝权限之后,系统会调用onRequestPermissionsResult方法,我们可以在该方法中处理相应的逻辑。
阅读全文