afkT / DevUtils

:fire: ( 持续更新,目前含 300+ 工具类 ) DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。
Apache License 2.0
1.37k stars 305 forks source link

UriUtils.java #8

Closed JiZhi-Error closed 4 years ago

JiZhi-Error commented 4 years ago

Caused by: java.lang.NumberFormatException: For input string: "msf:1160391" 建议参考https://blog.csdn.net/jingzz1/article/details/106188462/ 我系统AndroidQ遇到的

afkT commented 4 years ago

尝试 Android Q DEBUG 暂时没出现这个情况,你是调用 UriUtils.getFilePathByUri 出现的?

实际是因为 Android Q Scoped Storage 限制导致,链接内的代码操作是,通过判断大于 Android Q 则直接把 Uri 文件复制到 getExternalCacheDir 中,并且返回该文件路径,这种和这个方法功能有歧义,我可以加一个新方法,专门用于把 Uri 复制到 Cahce 中并返回复制后的路径信息

JiZhi-Error commented 4 years ago

尝试 Android Q DEBUG 暂时没出现这个情况,你是调用 UriUtils.getFilePathByUri 出现的?

实际是因为 Android Q Scoped Storage 限制导致,链接内的代码操作是,通过判断大于 Android Q 则直接把 Uri 文件复制到 getExternalCacheDir 中,并且返回该文件路径,这种和这个方法功能有歧义,我可以加一个新方法,专门用于把 Uri 复制到 Cahce 中并返回复制后的路径信息

我目前就是这么干的,魔改了你的工具类 判断是否大于Q 我在我手机上这个问题是必现得:一加7P Android Q

JiZhi-Error commented 4 years ago

尝试 Android Q DEBUG 暂时没出现这个情况,你是调用 UriUtils.getFilePathByUri 出现的? 实际是因为 Android Q Scoped Storage 限制导致,链接内的代码操作是,通过判断大于 Android Q 则直接把 Uri 文件复制到 getExternalCacheDir 中,并且返回该文件路径,这种和这个方法功能有歧义,我可以加一个新方法,专门用于把 Uri 复制到 Cahce 中并返回复制后的路径信息

我目前就是这么干的,魔改了你的工具类 判断是否大于Q 我在我手机上这个问题是必现得:一加7P Android Q

image

afkT commented 4 years ago

已经修复了(DevAppX:1.9.9),你可以直接调用 UriUtils.getFilePathByUri(uri, true) 或者 UriUtils.copyByUri(uri)