diff --git a/lib/data/services/qq_musoc.dart b/lib/data/services/qq_musoc.dart index 67a537a93..e12e2a8d4 100644 --- a/lib/data/services/qq_musoc.dart +++ b/lib/data/services/qq_musoc.dart @@ -35,7 +35,9 @@ class QqMusocService extends GetxService { final result = await _qqMusic.login(); if (result['success'] == true) { print('QQ音乐自动登录成功: ${result['openId']}'); - syncCurrentPlayInfo(); + Future.delayed(Duration(milliseconds: 500), () { + syncCurrentPlayInfo(); + }); } else { print('QQ音乐自动登录失败: ${result['error']}'); } diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt index f077819cd..b6c24d196 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicLoginManager.kt @@ -100,7 +100,8 @@ class QQMusicLoginManager(private val activity: Activity) { ErrorCodes.ERROR_OK -> { // 已授权,直接请求登录信息 Log.d(TAG, "已授权,直接获取登录信息") - requestAuth(callback) + callback.onSuccess("","","") +// requestAuth(callback) } ErrorCodes.ERROR_API_NO_PERMISSION -> { // 需要授权 diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt index 552a78c9f..edcf3c365 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicManager.kt @@ -63,7 +63,6 @@ class QQMusicManager(private val activity: Activity) { } init { - Log.d(TAG, "QQ音乐服务未连接,无法发送hi消息") bindQQMusicApiService() } diff --git a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt index be5ce6ae3..8b3bb69ed 100644 --- a/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt +++ b/local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt @@ -87,19 +87,14 @@ class QQMusicSingleton private constructor() { * 检查是否已登录且未过期 */ fun isLoggedIn(): Boolean { - val loginResult = currentLoginResult ?: return false - - try { - val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) - val expireDate = dateFormat.parse(loginResult.expireTime) - val currentDate = Date() - - val isValid = expireDate != null && currentDate.before(expireDate) - Log.d(TAG, "登录状态检查: ${if (isValid) "有效" else "已过期"}") - return isValid - } catch (e: Exception) { - Log.e(TAG, "解析过期时间失败: ${e.message}") - return false + if (currentLoginResult == null){ + loadSavedLoginInfo() + if (currentLoginResult == null){ + return false + } + return true + }else{ + return true } } @@ -118,25 +113,27 @@ class QQMusicSingleton private constructor() { callback(Result.failure(Exception("未安装QQ音乐软件,请先安装QQ音乐软件"))) return } - + val currentActivity = activity // 先检查是否已经登录且未过期 if (isLoggedIn()) { Log.d(TAG, "用户已登录且未过期,直接返回登录信息") + ensureMusicManager(currentActivity!!) callback(Result.success(currentLoginResult!!)) return } - - val currentActivity = activity + + if (currentActivity == null) { callback(Result.failure(Exception("Activity not available"))) return } - + Log.d(TAG, "开始新的登录流程") loginManager = QQMusicLoginManager(currentActivity) loginManager?.startLogin(object : QQMusicLoginManager.LoginCallback { override fun onSuccess(openId: String, openToken: String, expireTime: String) { handler.post { + ensureMusicManager(currentActivity!!) val result = LoginResult(openId, openToken, expireTime) currentLoginResult = result saveLoginInfo(result) @@ -501,13 +498,6 @@ class QQMusicSingleton private constructor() { if (openId != null && openToken != null && expireTime != null) { currentLoginResult = LoginResult(openId, openToken, expireTime) Log.d(TAG, "从本地加载登录信息成功") - - // 检查是否过期 - if (!isLoggedIn()) { - Log.d(TAG, "本地登录信息已过期,清除") - clearSavedLoginInfo() - currentLoginResult = null - } } else { Log.d(TAG, "本地无保存的登录信息") }