【问题标题】:Android Calendar Check PermissionAndroid 日历检查权限
【发布时间】:2016-10-25 09:23:49
【问题描述】:

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

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

....

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: android permissions calendar securityexception


    【解决方案1】:

    先处理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);}
    

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您的 targetSdkVersion 为 23 或更高,只需降低它

      【讨论】:

      • 你应该在新版本的android中正确处理权限
      • 6.0 不流行,我们不强制使用 api 23,至少目前是这样。
      • 根据 android 仪表板 18.7% 的 android 设备正在运行 marshmallow,您绝对应该考虑处理 marshmallow 及更高版本的权限,您可能会失去大部分用户群,因为您认为它“不受欢迎”
      猜你喜欢
      • 2016-07-22
      • 1970-01-01
      • 2017-09-26
      • 2011-04-27
      • 2017-07-15
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多