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

Android构建MicroStream示例应用出现文件访问拒绝错误如何解决

错误根因

报错核心是MicroStream默认使用相对路径storage/作为存储目录,Android系统禁止应用直接在进程根路径下创建读写文件,触发权限拒绝异常。


解决方案

方案一:使用应用专属内部存储(推荐,无需额外权限)

Android应用的内部专属目录本身具备读写权限,不需要申请任何权限,适配所有系统版本,操作步骤如下:

  1. 先在Context中获取合法的可写目录路径
// Activity/Fragment中调用,生成应用内部专属的MicroStream存储目录
val microStreamDir = File(filesDir, "microstream_data").absolutePath
  1. 初始化MicroStream时显式指定存储路径,不要使用无参的EmbeddedStorage.start()
// 传入自定义根对象+合法存储路径初始化
val storageManager = EmbeddedStorage.start(
    myRootData, // 你自己定义的存储根数据对象
    Paths.get(microStreamDir)
)

方案二:使用公共存储目录(需动态申请权限)

如果需要把存储数据放在公共存储空间允许其他应用访问,需做权限适配:

  1. 在AndroidManifest.xml中添加权限声明
<!-- 公共存储读权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Android 12及以下公共存储写权限 -->
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />
<!-- Android13+如果存储非媒体文件,需申请MANAGE_EXTERNAL_STORAGE权限,需Google Play审核 -->
  1. 初始化MicroStream之前,先动态申请存储权限,用户授权通过后再执行初始化逻辑。

注意事项

  • 初始化操作属于IO操作,不要在主线程直接执行,避免阻塞主线程触发ANR,建议放到子线程或协程中执行。
  • 版本升级可选:可把依赖替换为MicroStream官方适配Android的专用依赖,进一步简化平台适配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:54:04