android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限

简介: android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限

现象

storage下可读取,但/mnt/media_rw不可读取

/mnt/media_rw/A009-1B4F/rk3568_s-ota-20230704.zip (Permission Denied)

解决方法

把/mnt/media_rw/ 替换为 /storage


1.在解析ota升级包时,将 /mnt/media_rw/ 替换为 /storage


if (Build.VERSION.SDK_INT >= 30) {
            if (mImageFilePath.startsWith("/data/media")) {
                tempPath = mImageFilePath.replace("/data/media", "/storage/emulated");
            } else if (mImageFilePath.startsWith("/mnt/media_rw")) {
                tempPath = mImageFilePath.replace("/mnt/media_rw", "/storage");
            }
 
        }

 

2.真正执行升级逻辑时,将 /storage 再替换回  /mnt/media_rw/


        if (Build.VERSION.SDK_INT >= 30) { // Build.VERSION_CODES.R
            Log.d(TAG, "installPackage SDK version >= Build.VERSION_CODES.R,should convert update file path.");
            if (parsedUpdate.mUrl.startsWith("file:///storage/emulated/0")) {
                convertPath = parsedUpdate.mUrl.replace("/storage/emulated/0", "/data/media/0");
                Log.d(TAG, "startsWith(\"file:///storage/emulated/0\")");
            } else if (parsedUpdate.mUrl.startsWith("file:///storage")) {
                convertPath = parsedUpdate.mUrl.replace("/storage", "/mnt/media_rw");
                Log.d(TAG, "startsWith(\"file://storage\")");
            }
            Log.d(TAG, "installPackage update " + parsedUpdate.mUrl + " to " + convertPath);
        }


目录
相关文章
|
12月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
598 64
|
7月前
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
502 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
12月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
789 64
|
11月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
298 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1536 83
|
11月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
906 19
|
11月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
2577 2
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
1337 1
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
1693 11

热门文章

最新文章