HarmonyOS 鸿蒙Next fs.open报错13900001 到底需要什么权限啊 搞了一天了
HarmonyOS 鸿蒙Next fs.open报错13900001 到底需要什么权限啊 搞了一天了 fs.open报错13900001 到底需要什么权限啊 搞了一天了
有完整代码么,沙盒路径和非沙盒路径 需要的权限是不一样的。
已经解决了 谢谢,
可以发个帖子详细讲一下相关解决过程吗?我也被这个卡好久了。
-
沙箱路径无需权限,直接读写即可,用
context.filesDir
即可得应用文件根目录路径。 -
公共目录(Download, Document, DCIM之类)需要在
module.json5
中声明权限;在访问前进行用户权限验证、申请,授权通过后才可用ohos.file.picker
接口进行读写。具体可参考:https://developer.huawei.com/consumer/cn/forum/topic/0202148239705951102?fid=0102683795438680754
在HarmonyOS(鸿蒙)中,fs.open
报错 13900001
通常表示文件操作权限不足。要解决这个问题,首先需要确保你的应用已经正确申请了文件访问权限。
-
检查权限声明:在应用的
config.json
文件中,确保已经声明了ohos.permission.READ_MEDIA
和ohos.permission.WRITE_MEDIA
权限。例如:"reqPermissions": [ { "name": "ohos.permission.READ_MEDIA" }, { "name": "ohos.permission.WRITE_MEDIA" } ]
-
动态权限申请:在运行时,应用需要通过
requestPermissionsFromUser
方法动态申请权限。例如:import abilityAccessCtrl from '[@ohos](/user/ohos).abilityAccessCtrl'; let atManager = abilityAccessCtrl.createAtManager(); atManager.requestPermissionsFromUser(this.context, ['ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA'], (err, data) => { if (err) { console.error(`Failed to request permissions: ${err.message}`); } else { console.log('Permissions granted'); } });
-
文件路径问题:确保你正在访问的文件路径是应用有权限访问的路径。鸿蒙系统对文件访问有严格限制,通常只能在应用的私有目录(如
this.context.filesDir
)或通过文件选择器获得的路径上进行操作。 -
文件系统权限:如果你尝试访问外部存储或其他应用的数据,可能需要额外的权限或通过特定的API(如
FilePicker
)来获取访问权限。
通过以上步骤,你应该能够解决 fs.open
报错 13900001
的问题。