fix: improve history import logic & m3u file picker issue at Android 7-9

This commit is contained in:
tunbmoon
2026-02-12 19:40:00 +08:00
parent 42e2d6ffea
commit 0503123a2a
3 changed files with 29 additions and 5 deletions
+2 -2
View File
@@ -22,8 +22,8 @@ android {
applicationId = "com.antoniegil.astronia"
minSdk = 24
targetSdk = 36
versionCode = 1032
versionName = "1.0.3"
versionCode = 1040
versionName = "1.0.4"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { useSupportLibrary = true }
@@ -3,6 +3,7 @@ package com.antoniegil.astronia.ui.page
import android.content.Intent
import android.net.Uri
import android.os.Build
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.AnimatedVisibility
@@ -228,7 +229,12 @@ fun HomePage(
trailingIcon = {
Row {
IconButton(onClick = {
filePickerLauncher.launch(arrayOf("audio/x-mpegurl", "application/vnd.apple.mpegurl", "audio/mpegurl"))
val mimeTypes = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
arrayOf("*/*")
} else {
arrayOf("audio/x-mpegurl", "application/vnd.apple.mpegurl", "audio/mpegurl")
}
filePickerLauncher.launch(mimeTypes)
}) {
Icon(Icons.Outlined.FolderOpen, stringResource(R.string.local_import))
}
@@ -93,13 +93,31 @@ object DataManager {
return Pair(false, 0)
}
val prefManager = SettingsManager.getInstance(context)
val historyItems = SettingsManager.parseHistoryJson(jsonString)
if (historyItems.isEmpty()) {
return Pair(false, 0)
}
val prefManager = SettingsManager.getInstance(context)
val existingHistory = prefManager.getHistory()
val existingUrls = existingHistory.map { it.url }.toSet()
prefManager.clearHistory()
var successCount = 0
val mergedItems = mutableListOf<HistoryItem>()
mergedItems.addAll(existingHistory)
historyItems.forEach { item ->
if (!existingUrls.contains(item.url)) {
mergedItems.add(item)
}
}
mergedItems.sortByDescending { it.timestamp }
var successCount = 0
mergedItems.forEach { item ->
prefManager.addOrUpdateHistory(
item.url,
item.name,