diff --git a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt index 9f4f007..44ba819 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt @@ -44,7 +44,9 @@ class TaskListFragment : BaseFragment() { @Inject lateinit var taskApi: TaskApi @Inject lateinit var nfcTaskManager: NfcTaskManager - @Inject lateinit var okHttpClient: OkHttpClient + + /** 下载用的 OkHttp(不带签名拦截器,走 HTTP 避免 TLS 问题) */ + private val downloadClient by lazy { OkHttpClient.Builder().build() } /** 任务 ID 列表(queryTaskIds 返回) */ private var taskList: List = emptyList() @@ -460,11 +462,13 @@ class TaskListFragment : BaseFragment() { } } - /** 用 OkHttp 下载音频文件到缓存目录(复用应用 SSL 配置) */ + /** 用 OkHttp 下载音频文件到缓存目录 */ private fun downloadToCache(url: String): java.io.File? { return try { - val request = Request.Builder().url(url).build() - val response = okHttpClient.newCall(request).execute() + // OSS 的 HTTPS 在 Android 8.1 设备 TLS 握手失败,降级为 HTTP + val httpUrl = url.replace("https://", "http://") + val request = Request.Builder().url(httpUrl).build() + val response = downloadClient.newCall(request).execute() if (!response.isSuccessful) { Timber.w("语音下载HTTP错误: ${response.code}") return null