Browse Source

上传qq音乐服务不授权bug

weicu
liwei1dao 1 year ago
parent
commit
99cd0f9ee8
  1. 186
      local_plugins/qq_music/android/src/main/kotlin/com/yunqiinnovation/qq_music/QQMusicSingleton.kt

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

@ -434,41 +434,72 @@ class QQMusicSingleton private constructor() {
callback(Result.failure(Exception("Activity not available"))) callback(Result.failure(Exception("Activity not available")))
return@lambda return@lambda
} }
Log.d(TAG, "开始 ${actionName}")
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{
override fun onSuccess(){
action(musicManager!!, object : QQMusicManager.SearchCallback {
override fun onSuccess(songs: List<Map<String, Any?>>) {
Log.d(TAG, "${actionName} 成功")
handler.post {
callback(Result.success(songs))
}
}
override fun onError(errorCode: Int, errorMessage: String) { // 添加登录状态检查
Log.d(TAG, "失败 ${actionName} 成功") if (!isLoggedIn()) {
if (allagain > 0 && curragain < allagain){ //重试机制 Log.d(TAG, "用户未登录,开始自动登录")
executeSearchbackAction(actionName,curragain+1,allagain,action) login { loginResult ->
}else{ if (loginResult.isSuccess) {
handler.post { Log.d(TAG, "自动登录成功,继续执行 ${actionName}")
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) // 登录成功后继续执行原操作
} executeSearchAction(actionName, curragain, allagain, action, callback)
} } else {
} Log.e(TAG, "自动登录失败: ${loginResult.exceptionOrNull()?.message}")
}) callback(Result.failure(Exception("用户未登录且自动登录失败: ${loginResult.exceptionOrNull()?.message}")))
}
} }
override fun onError(errorCode: Int, errorMessage: String) { return@lambda
if (allagain > 0 && curragain < allagain){ //重试机制 }
executeSearchbackAction(actionName,curragain+1,allagain,action)
}else{ // 用户已登录,直接执行搜索操作
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(context!!, object: QQMusicManager.BindCallback{
override fun onSuccess(){
action(musicManager!!, object : QQMusicManager.SearchCallback {
override fun onSuccess(songs: List<Map<String, Any?>>) {
Log.d(TAG, "${actionName} 成功")
handler.post { handler.post {
callback(Result.failure(Exception("$actionName 失败: $errorMessage"))) callback(Result.success(songs))
} }
} }
}
})
} override fun onError(errorCode: Int, errorMessage: String) {
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}")
if (allagain > 0 && curragain < allagain){ //重试机制
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}")
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback)
}else{
handler.post {
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
}
}
}
})
}
override fun onError(errorCode: Int, errorMessage: String) {
Log.d(TAG, "失败 ${actionName} errorCode: $errorCode errorMessage:$errorMessage 当前重试${curragain}/${allagain}")
if (allagain > 0 && curragain < allagain){ //重试机制
Log.d(TAG, "重试 ${actionName} 当前重试${curragain+1}/${allagain}")
executeSearchbackAction(actionName,curragain+1,allagain,action)(callback)
}else{
handler.post {
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
}
}
}
})
} }
@ -491,49 +522,80 @@ class QQMusicSingleton private constructor() {
callback(Result.failure(Exception("Activity not available"))) callback(Result.failure(Exception("Activity not available")))
return@lambda return@lambda
} }
Log.d(TAG, "开始 ${actionName}")
ensureMusicManager(currentActivity,object: QQMusicManager. BindCallback{ // 添加登录状态检查
override fun onSuccess(){ if (!isLoggedIn()) {
action(musicManager!!, object : QQMusicManager.PlayCallback { Log.d(TAG, "用户未登录,开始自动登录")
override fun onSuccess() { login { loginResult ->
Log.d(TAG, "${actionName}成功") if (loginResult.isSuccess) {
handler.post { Log.d(TAG, "自动登录成功,继续执行 ${actionName}")
callback(Result.success(Unit)) // 登录成功后继续执行原操作
} 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(context!!,object: QQMusicManager. BindCallback{
override fun onSuccess(){
action(musicManager!!, object : QQMusicManager.PlayCallback {
override fun onSuccess() {
Log.d(TAG, "${actionName}成功")
handler.post {
callback(Result.success(Unit))
} }
}
override fun onError(errorCode: Int, errorMessage: String) { override fun onError(errorCode: Int, errorMessage: String) {
if (allagain > 0 && curragain < allagain){ //重试机制 if (allagain > 0 && curragain < allagain){ //重试机制
executePlaybackAction(actionName,curragain+1,allagain,action) executePlaybackAction(actionName,curragain+1,allagain,action)(callback)
}else{ }else{
handler.post { handler.post {
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage") Log.e(TAG, "${actionName}失败: $errorCode $errorMessage")
if (errorCode == -1){ if (errorCode == -1){
musicManager?.bindQQMusicApiService() musicManager?.bindQQMusicApiService()
callback(Result.failure(Exception("播放失败: $errorMessage"))) callback(Result.failure(Exception("播放失败: $errorMessage")))
} else if (errorCode == 1030) { } else if (errorCode == 1030) {
callback(Result.success(Unit)) callback(Result.success(Unit))
}else{ }else{
callback(Result.failure(Exception("播放失败: $errorMessage"))) callback(Result.failure(Exception("播放失败: $errorMessage")))
}
} }
} }
} }
})
}
override fun onError(errorCode: Int, errorMessage: String) {
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage")
if (allagain > 0 && curragain < allagain){ //重试机制
executePlaybackAction(actionName,curragain+1,allagain,action)
}else{
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
} }
})
}
override fun onError(errorCode: Int, errorMessage: String) {
Log.e(TAG, "${actionName}失败: $errorCode $errorMessage")
if (allagain > 0 && curragain < allagain){ //重试机制
executePlaybackAction(actionName,curragain+1,allagain,action)(callback)
}else{
callback(Result.failure(Exception("$actionName 失败: $errorMessage")))
} }
}) }
})
}
} }
private fun executeInfoAction( private fun executeInfoAction(
actionName: String, actionName: String,
action: (QQMusicManager, QQMusicManager.InfoCallback) -> Unit action: (QQMusicManager, QQMusicManager.InfoCallback) -> Unit

Loading…
Cancel
Save