Android 持久化 uri 权限不会在设备重启后保留



尽管调用

ContentResolver.TakePersistableUriPermission(uri, ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission)

在文档树URI上,URI并未在设备重新启动时持续存在,尽管ContentResolver.PersistedUriPermissions属性在重新启动设备之前包含所需的URI。该文档树是这样获得的(每个存储访问框架持续存在的权限无效):

var intent = new Intent(Intent.ActionOpenDocumentTree);
intent.AddFlags(
    ActivityFlags.GrantReadUriPermission |
    ActivityFlags.GrantWriteUriPermission |
    ActivityFlags.GrantPersistableUriPermission | 
    ActivityFlags.GrantPrefixUriPermission);
StartActivityForResult(intent, INTENT_SELECT_TREE);

我缺少什么吗?这是在模拟器和硬件上的AOSP Lollipop上。

以下代码对我有用:

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    var androidUri = data.Data;
    var takeFlags = data.Flags & (ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission);
    ContentResolver.TakePersistableUriPermission(androidUri, takeFlags);
}

最新更新