#码力全开·技术π对#Android的Scoped Storage如何限制应用对文件系统的访问?


Android
key_3_feng
2025-08-27 21:58:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
周周的奇妙编程
周周的奇妙编程

Android的Scoped Storage(分区存储)从Android 10(API 29)起强化隐私保护,限制应用对文件系统的自由访问。核心机制如下:

  • 应用专属目录:应用只能自由读写自身目录(如​​/Android/data/com.example.app/​​),卸载时自动清除。
  • 共享媒体访问:访问照片、视频、音频需通过MediaStore API,按类型(如​​MediaStore.Images.Media.EXTERNAL_CONTENT_URI​​)查询,系统自动处理权限。
  • 特定文件授权:若需访问文档等文件,必须使用​​Storage Access Framework​​​(SAF)的​​Intent.ACTION_OPEN_DOCUMENT​​,由用户手动选择文件并授予权限。
  • 保留旧版行为:应用可设置​​requestLegacyExternalStorage="true"​​暂时豁免,但Android 11后该标记失效。

例如,读取图片必须:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE);

用户选择后,应用通过​​ContentResolver​​访问返回的URI。Scoped Storage防止应用批量扫描和滥用用户文件,提升数据安全与隐私保护。

分享
微博
QQ
微信https://www.51cto.com/aigc/
回复
5天前
发布
相关问题
提问