Android 日历检查权限
Android Calendar Check Permission
我目前正在实施日历提供程序,但是我偶然发现了一个我想避免的小错误。
ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();
....
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues); // Error pops here
"Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission
) or explicitly handle a potential `SecurityException"
防止此错误的最佳方法是什么?
任何帮助将不胜感激。
您的targetSdkVersion为23或更高,降低即可
首先处理 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);}
您始终可以将 throws SecurityException 添加到方法中,并在更上游处理捕获的异常。此外,如果您有兴趣使用 reactivex 方法来处理权限,我建议使用这个库 https://github.com/tbruyelle/RxPermissions。
我目前正在实施日历提供程序,但是我偶然发现了一个我想避免的小错误。
ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();
....
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues); // Error pops here
"Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission
) or explicitly handle a potential `SecurityException"
防止此错误的最佳方法是什么?
任何帮助将不胜感激。
您的targetSdkVersion为23或更高,降低即可
首先处理 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);}
您始终可以将 throws SecurityException 添加到方法中,并在更上游处理捕获的异常。此外,如果您有兴趣使用 reactivex 方法来处理权限,我建议使用这个库 https://github.com/tbruyelle/RxPermissions。