From 91c712c983a3d0d35606af2448151d3aebaddbe8 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Fri, 24 Jan 2025 18:39:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=8E=E7=89=88=E6=9C=AC?= =?UTF-8?q?=20Android=20=E5=9C=A8=E6=9F=90=E4=BA=9B=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=AF=B9=20Emoji=20=E5=AD=97=E7=AC=A6=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E7=9A=84=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/assets/script/user-api-preload.js | 2 +- .../toside/music/mobile/userApi/QuickJS.java | 18 ++++++++++++------ publish/changeLog.md | 3 ++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/android/app/src/main/assets/script/user-api-preload.js b/android/app/src/main/assets/script/user-api-preload.js index d948427..b5e9306 100644 --- a/android/app/src/main/assets/script/user-api-preload.js +++ b/android/app/src/main/assets/script/user-api-preload.js @@ -377,7 +377,7 @@ globalThis.lx_setup = (key, id, name, description, version, author, homepage, ra }, md5(str) { if (typeof str !== 'string') throw new Error('param required a string') - const md5 = nativeFuncs.utils_str2md5(str) + const md5 = nativeFuncs.utils_str2md5(encodeURIComponent(str)) // console.log('md5', str, md5) return md5 }, diff --git a/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java b/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java index 416c906..c3c8bad 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java +++ b/android/app/src/main/java/cn/toside/music/mobile/userApi/QuickJS.java @@ -1,5 +1,6 @@ package cn.toside.music.mobile.userApi; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -10,14 +11,12 @@ import cn.toside.music.mobile.crypto.RSA; import com.facebook.react.bridge.ReactApplicationContext; import com.whl.quickjs.android.QuickJSLoader; -import com.whl.quickjs.wrapper.JSCallFunction; import com.whl.quickjs.wrapper.QuickJSContext; import java.io.InputStream; +import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.UUID; -import okhttp3.HttpUrl; public class QuickJS { private final Handler eventHandler; @@ -87,15 +86,22 @@ public class QuickJS { }); jsContext.getGlobalObject().setProperty("__lx_native_call__utils_str2md5", args -> { try { + // Log.d("UserApi [script call]", "utils_str2md5: " + args[0]); + String str; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + str = URLDecoder.decode((String) args[0], StandardCharsets.UTF_8); + } else { + str = URLDecoder.decode((String) args[0], "UTF-8"); + } + // Log.d("UserApi [script call]", "utils_str2md5: " + str); MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] inputBytes = ((String) args[0]).getBytes(); - byte[] md5Bytes = md.digest(inputBytes); + byte[] md5Bytes = md.digest(str.getBytes(StandardCharsets.UTF_8)); StringBuilder md5String = new StringBuilder(); for (byte b : md5Bytes) { md5String.append(String.format("%02x", b)); } return md5String.toString(); - } catch (NoSuchAlgorithmException e) { + } catch (Exception e) { Log.e("UserApi [utils]", "utils_str2md5 error: " + e.getMessage()); return ""; } diff --git a/publish/changeLog.md b/publish/changeLog.md index 54e9236..fb3b480 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -24,7 +24,8 @@ - 修复导出文件到范围存储类型的目录时,扩展名丢失的问题 - 修复切换列表播放歌曲时可能会出现播放的歌曲不对应的问题 - 修复内置列表名称硬编码和语言切换显示的问题(#662) -- 修复某些情况下进播放详情页时,详情页不显示或应用界面无响应的问题 +- 修复某些情况下进播放详情页时,详情页会不显示或APP界面无响应的问题 +- 修复低版本 Android 在某些情况下对 Emoji 字符编码的处理问题 ### 变更