Browse Source

上传qq音乐服务不授权bug

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
12a3c44e33
  1. 82
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt

82
local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt

@ -434,8 +434,38 @@ class QQMusicSingleton private constructor() {
callback(Result.failure(Exception("Activity not available")))
return@lambda
}
// 添加登录状态检查
if (!isLoggedIn()) {
Log.d(TAG, "用户未登录,开始自动登录")
login { loginResult ->
if (loginResult.isSuccess) {
Log.d(TAG, "自动登录成功,继续执行 ${actionName}")
// 登录成功后继续执行原操作
executeSearchAction(actionName, curragain, allagain, action, callback)
} else {
Log.e(TAG, "自动登录失败: ${loginResult.exceptionOrNull()?.message}")
callback(Result.failure(Exception("用户未登录且自动登录失败: ${loginResult.exceptionOrNull()?.message}")))
}
}
return@lambda
}
// 用户已登录,直接执行搜索操作
executeSearchAction(actionName, curragain, allagain, action, callback)
}
}
// 提取搜索执行逻辑为独立方法
private fun executeSearchAction(
actionName: String,
curragain: Int,
allagain: Int,
action: (QQMusicManager, QQMusicManager.SearchCallback) -> Unit,
callback: (Result<List<Map<String, Any?>>>) -> Unit
) {
Log.d(TAG, "开始 ${actionName}")
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{
ensureMusicManager(context!!, object: QQMusicManager.BindCallback{
override fun onSuccess(){
action(musicManager!!, object : QQMusicManager.SearchCallback {
override fun onSuccess(songs: List<Map<String, Any?>>) {
@ -446,9 +476,10 @@ class QQMusicSingleton private constructor() {
}
override fun onError(errorCode: Int, errorMessage: String) {
Log.d(TAG, "失败 ${actionName} 成功")
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}")
if (allagain > 0 && curragain < allagain){ //重试机制
executeSearchbackAction(actionName,curragain+1,allagain,action)
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}")
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback)
}else{
handler.post {
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
@ -458,8 +489,10 @@ class QQMusicSingleton private constructor() {
})
}
override fun onError(errorCode: Int, errorMessage: String) {
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}")
if (allagain > 0 && curragain < allagain){ //重试机制
executeSearchbackAction(actionName,curragain+1,allagain,action)
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}")
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback)
}else{
handler.post {
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
@ -467,8 +500,6 @@ class QQMusicSingleton private constructor() {
}
}
})
}
}
@ -491,8 +522,38 @@ class QQMusicSingleton private constructor() {
callback(Result.failure(Exception("Activity not available")))
return@lambda
}
// 添加登录状态检查
if (!isLoggedIn()) {
Log.d(TAG, "用户未登录,开始自动登录")
login { loginResult ->
if (loginResult.isSuccess) {
Log.d(TAG, "自动登录成功,继续执行 ${actionName}")
// 登录成功后继续执行原操作
executePlayAction(actionName, curragain, allagain, action, callback)
} else {
Log.e(TAG, "自动登录失败: ${loginResult.exceptionOrNull()?.message}")
callback(Result.failure(Exception("用户未登录且自动登录失败: ${loginResult.exceptionOrNull()?.message}")))
}
}
return@lambda
}
// 用户已登录,直接执行搜索操作
executePlayAction(actionName, curragain, allagain, action, callback)
}
}
private fun executePlayAction(
actionName: String,
curragain:Int,
allagain:Int,
action: (QQMusicManager, QQMusicManager.PlayCallback) -> Unit,
callback: (Result<Unit>) -> Unit
) {
Log.d(TAG, "开始 ${actionName}")
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{
ensureMusicManager(context!!,object: QQMusicManager. BindCallback{
override fun onSuccess(){
action(musicManager!!, object : QQMusicManager.PlayCallback {
override fun onSuccess() {
@ -504,7 +565,7 @@ class QQMusicSingleton private constructor() {
override fun onError(errorCode: Int, errorMessage: String) {
if (allagain > 0 && curragain < allagain){ //重试机制
executePlaybackAction(actionName,curragain+1,allagain,action)
executePlaybackAction(actionName,curragain+1,allagain,action)(callback)
}else{
handler.post {
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage")
@ -524,7 +585,7 @@ class QQMusicSingleton private constructor() {
override fun onError(errorCode: Int, errorMessage: String) {
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage")
if (allagain > 0 && curragain < allagain){ //重试机制
executePlaybackAction(actionName,curragain+1,allagain,action)
executePlaybackAction(actionName,curragain+1,allagain,action)(callback)
}else{
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
}
@ -532,7 +593,8 @@ class QQMusicSingleton private constructor() {
})
}
}
private fun executeInfoAction(
actionName: String,

Loading…
Cancel
Save