Android日历检查权限

时间:2016-10-25 09:23:50

标签: android permissions calendar securityexception

我目前正在实施日程提供程序,但我偶然发现了一个我想要阻止的小错误。

ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();

....

Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues); // Error pops here

“调用需要用户可能拒绝的权限:代码应明确检查权限是否可用(使用checkPermission)或显式处理潜在的”SecurityException“

防止此错误的最佳方法是什么?

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

首先处理android权限,检查它们是否可用,如果不是,您可以按如下所示请求它们

仅在权限可用时继续使用您的功能

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED 
    && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);}else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED 
        && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED){

ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues);}

答案 1 :(得分:0)

您始终可以将抛出SecurityException 添加到方法中,并在上游处理捕获的异常。此外,如果您有兴趣使用reactivex方法来处理权限,我建议使用此库https://github.com/tbruyelle/RxPermissions

答案 2 :(得分:-2)

你的targetSdkVersion是23或更高,只是减少它