Skip to content

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 13:57
· 33 commits to main since this release

Fixed

  • 长中文名改名必然失败:MAX_NAME_LENGTH 原来是 150 字符,而 ext4/f2fs 的单个文件名上限是 255 字节(一个汉字占 3 字节),86 个汉字以上就会 rename 失败。现在按 UTF-8 字节数截断(上限 240 字节,留出系统追加后缀的余量),并按字符边界回退,绝不会把汉字/emoji 劈成半个;扩展名始终完整保留。
  • 复制失败后界面变成死路:失败时两个按钮都被禁用,状态栏却提示“点发送重试”,根本点不了。现在失败后按钮保持可点,确实可以点“发送/保存”重新复制;建目录失败同理。
  • 改名会卡主线程:已交付过的文件再次改名走的是整份 copyFile,之前跑在主线程上,大文件会 ANR;而且「已交付」是在点按钮时登记的,SAF 取消保存这种“什么都没交付”的情况也会误登记。现在改名(含复制)整体派发到 IO 线程,只有真正交付成功才登记路径。
  • 取消 SAF 保存后状态栏一直停在“正在保存到下载…”:现在恢复按钮并提示“已取消保存”。
  • statSize 未知时的静默截断:pipe 型 Provider 拿不到文件大小时,原先只要传过字节就判定成功。现在这种情况直接走流复制(读到 EOF 才算完成),同目录的 copyFile 也补上了字节数校验。
  • 临时文件名直接拼接原始扩展名:_incoming + originalExt 会把对方应用给的长/含 / \ : 的扩展名原样带进路径,现在先经 FileNameUtils.sanitizeExt 规范化。

Changed

  • Toast 适配 Android 12+ 的两行限制(超出会被系统直接截断):发送提示压到两行以内并带上应用名;保存提示里的文件名过长时保留首尾、中间省略,尾部能保住扩展名。
  • Android 7–9 的下载目录定位改用 DocumentsContract.buildDocumentUri();写入先试 "wt",个别第三方 DocumentsProvider 不支持时退回 "w"。
  • status_rename_failed 文案改为提示“名字可能太长”(非法字符其实会被自动替换成 _)。
  • 新增 FileNameUtils.truncateUtf8 与 5 个单元测试(长中文名、emoji、字节边界截断)。

本包已签名,证书 SHA-256: 3682cce6d8fbf859b9b0a90ef8818acc747c82bb5f9d97418a4e6749cb6ccaca

校验安装包完整性: sha256sum -c SHA256SUMS.txt