Android Xamarin OpenInputStream权限操作\u打开\u文档

Android Xamarin OpenInputStream权限操作\u打开\u文档,android,xamarin,xamarin.android,permission-denied,Android,Xamarin,Xamarin.android,Permission Denied,我正在android上开发一个应用程序,当我使用带有特定uri的openInputStream时,我遇到了一个异常,下面是我的代码 try { using (var stream = Context.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(uriString))) { // } } catch (Exception e) { } 当uri为content://media/external/imag

我正在android上开发一个应用程序,当我使用带有特定uri的openInputStream时,我遇到了一个异常,下面是我的代码

try
{
   using (var stream = Context.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(uriString)))
   {
      //
   }
}
catch (Exception e)
{
}
当uri为content://media/external/images/media/61155“我也不例外

但是当uri是这样的时候content://com.android.providers.media.documents/document/image%3A61797"

我得到这个例外

权限拒绝:从ProcessRecord打开提供程序com.android.providers.media.MediaDocumentsProvider。。。。要求您使用ACTION\u OPEN\u文档或相关API获得访问权限

我不知道如何解决这个问题

我正在用android oreo 8.0的设备进行测试

最低android sdk api 21(棒棒糖5.0)


目标android sdk api 24(Nougat 7.0)

假设您正在执行文档打开意图,您需要通过
TakePersistableUriPermission请求所需的uri权限(读取和/或写入)

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == (int)ResultCode.Chooser && resultCode.HasFlag(Result.Ok))
    {
        var uri = data.Data;
        if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
        {
            ContentResolver.TakePersistableUriPermission(uri, ActivityFlags.GrantReadUriPermission);
        }
        using (var stream = ContentResolver.OpenInputStream(uri))
        {          
            Log.Debug("TAG", uri.ToString());
        }
    }
}

re:

我没有试图打开onactivityresult内部的流,uri字符串存储在sqlite数据库中,当我调用我的方法时,异常发生,我无法访问onactivityresult的原始urimethod@user3525706使用TakePersistableUriPermission仍然相关。请注意,内容提供商URI是可自愿的,不建议长期持久。您应该在首次获取uri时请求perm,并在使用uri之前重新请求它。稍后,我将在代码上下文的这一行中尝试它。ContentResolver.TakePersistableUriPermission(uri,ActivityFlags.GrantradUriPermission);Java.Lang.SecurityException:找不到UID 10171和Uri的持久权限授予content://com.android.providers.media.documents/document/image:62224 [用户0]