You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 如何移除存储访问框架(Storage Access Framework)的持久化Uri权限

移除SAF treeUri持久化权限的实现方案

你之前通过takePersistableUriPermission申请的持久化权限,有完全对应的配套API可以移除,不需要做特殊额外处理:

核心调用方法

直接调用ContentResolver提供的releasePersistableUriPermission接口,传入和申请时完全一致的uri与权限标识即可:

// 移除指定treeUri的持久化读写权限
getContentResolver().releasePersistableUriPermission(
    treeUri,
    Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
);

关键注意事项

  • 权限标识要和申请时完全匹配:如果当初申请了读、写两个flag,移除时也要同时传入这两个flag,不要只传其中一个,否则会出现对应权限残留的问题。
  • 传入的treeUri要和当初申请授权的原始uri完全一致,不能是拼接了子路径、修改了查询参数的衍生uri,否则系统无法匹配到对应的权限记录,会抛出安全异常或调用失效。
  • 调用该方法不需要持有uri的临时有效访问权限:只要是你的应用当初申请的持久化权限,哪怕临时授权已经过期,依然可以正常调用该方法完成移除操作。

常见坑点提醒:调用移除方法后,系统存储访问框架的授权列表中对应目录的授权状态会同步更新,后续直接访问该uri会抛出权限拒绝异常,需要重新走系统授权流程才能恢复访问。

内容的提问来源于stack exchange,提问作者pol2095

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 06:45:10