尽管调用
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);
}