Android权限相关 io.FileNotFoundException: /storage/emulated/0/tencent/: open failed: ENOENT

在尝试使用腾讯云OTA服务时,遇到点击下载固件按钮失败的问题,错误提示涉及文件找不到。解决方案是添加AndroidManifest.xml中的权限声明,特别是`WRITE_EXTERNAL_STORAGE`,并通过动态请求权限来确保功能正常运行。经过测试,动态添加权限的方法有效,允许程序成功下载固件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

在使用腾讯云OTA时,官方demo点击下载固件按钮可以下载,但是自己创建项目把代码移过来就不能下载,找许多解决方案,如
让添加:android:requestLegacyExternalStorage=“true”,但是本来AndroidManifest.xml文件就有,另外一个办法时动态添加权限,实测有效,记录一下:

报错情况:

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/tencent/L38IXR7TAGtest.log: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:496)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:159)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:115)
W/System.err:     at java.io.FileReader.<init>(FileReader.java:58)
W/System.err:     at com.example.otademo.MainActivity$SelfMqttLogCallBack.readOfflineLog(MainActivity.java:289)
W/System.err:     at com.tencent.iot.hub.device.java.core.log.TXMqttLogImpl.uploadOfflineLog(TXMqttLogImpl.java:251)
W/System.err:     at com.tencent.iot.hub.device.java.core.log.TXMqttLog.initMqttLog(TXMqttLog.java:74)
W/System.err:     at com.tencent.iot.hub.device.android.core.mqtt.TXMqttConnection.initMqttLog(TXMqttConnection.java:337)
W/System.err:     at com.tencent.iot.hub.device.android.core.gateway.TXGatewayConnection.access$300(TXGatewayConnection.java:39)
W/System.err:     at com.tencent.iot.hub.device.android.core.gateway.TXGatewayConnection$1.onSuccess(TXGatewayConnection.java:622)
W/System.err:     at org.eclipse.paho.client.mqttv3.internal.ConnectActionListener.onSuccess(ConnectActionListener.java:99)
W/System.err:     at org.eclipse.paho.client.mqttv3.internal.CommsCallback.fireActionEvent(CommsCallback.java:333)
W/System.err:     at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleActionComplete(CommsCallback.java:272)
W/System.err:     at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:198)
W/System.err:     at java.lang.Thread.run(Thread.java:919)
W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)

二、解决办法:

String[] permissions = {
         WRITE_EXTERNAL_STORAGE,MOUNT_UNMOUNT_FILESYSTEMS,READ_PHONE_STATE};
MainActivity.this.requestPermissions(permissions, 101);
//在permissions数组中添加自己需要的权限即可

在这里插入图片描述
再点击自己的demo中下载固件按钮就可以成功下载了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值