Limit subscription id workaround to Android 14+
This commit is contained in:
parent
417737b6a4
commit
ebe7e92982
1 changed files with 28 additions and 11 deletions
|
|
@ -8,10 +8,15 @@ import kotlinx.serialization.json.decodeFromStream
|
||||||
import org.fossify.commons.extensions.showErrorToast
|
import org.fossify.commons.extensions.showErrorToast
|
||||||
import org.fossify.commons.extensions.toast
|
import org.fossify.commons.extensions.toast
|
||||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
|
import org.fossify.commons.helpers.isUpsideDownCakePlus
|
||||||
import org.fossify.messages.activities.SimpleActivity
|
import org.fossify.messages.activities.SimpleActivity
|
||||||
import org.fossify.messages.dialogs.ImportMessagesDialog
|
import org.fossify.messages.dialogs.ImportMessagesDialog
|
||||||
import org.fossify.messages.extensions.config
|
import org.fossify.messages.extensions.config
|
||||||
import org.fossify.messages.models.*
|
import org.fossify.messages.models.BackupType
|
||||||
|
import org.fossify.messages.models.ImportResult
|
||||||
|
import org.fossify.messages.models.MessagesBackup
|
||||||
|
import org.fossify.messages.models.MmsBackup
|
||||||
|
import org.fossify.messages.models.SmsBackup
|
||||||
import org.xmlpull.v1.XmlPullParser
|
import org.xmlpull.v1.XmlPullParser
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
|
|
@ -26,7 +31,8 @@ class MessagesImporter(private val activity: SimpleActivity) {
|
||||||
fun importMessages(uri: Uri) {
|
fun importMessages(uri: Uri) {
|
||||||
try {
|
try {
|
||||||
val fileType = activity.contentResolver.getType(uri).orEmpty()
|
val fileType = activity.contentResolver.getType(uri).orEmpty()
|
||||||
val isXml = isXmlMimeType(fileType) || (uri.path?.endsWith("txt") == true && isFileXml(uri))
|
val isXml =
|
||||||
|
isXmlMimeType(fileType) || (uri.path?.endsWith("txt") == true && isFileXml(uri))
|
||||||
if (isXml) {
|
if (isXml) {
|
||||||
activity.toast(org.fossify.commons.R.string.importing)
|
activity.toast(org.fossify.commons.R.string.importing)
|
||||||
getInputStreamFromUri(uri)!!.importXml()
|
getInputStreamFromUri(uri)!!.importXml()
|
||||||
|
|
@ -41,20 +47,28 @@ class MessagesImporter(private val activity: SimpleActivity) {
|
||||||
@OptIn(kotlinx.serialization.ExperimentalSerializationApi::class)
|
@OptIn(kotlinx.serialization.ExperimentalSerializationApi::class)
|
||||||
private fun importJson(uri: Uri) {
|
private fun importJson(uri: Uri) {
|
||||||
try {
|
try {
|
||||||
val deserializedList = activity.contentResolver.openInputStream(uri)!!.buffered().use { inputStream ->
|
val deserializedList =
|
||||||
Json.decodeFromStream<List<MessagesBackup>>(inputStream)
|
activity.contentResolver.openInputStream(uri)!!.buffered().use { inputStream ->
|
||||||
}
|
Json.decodeFromStream<List<MessagesBackup>>(inputStream)
|
||||||
|
}
|
||||||
|
|
||||||
if (deserializedList.isEmpty()) {
|
if (deserializedList.isEmpty()) {
|
||||||
activity.toast(org.fossify.commons.R.string.no_entries_for_importing)
|
activity.toast(org.fossify.commons.R.string.no_entries_for_importing)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val messages = deserializedList.map { message ->
|
|
||||||
// workaround for messages not being imported on Android 14 when the device has a different subscriptionId (see #191)
|
val messages = if (isUpsideDownCakePlus()) {
|
||||||
when (message) {
|
deserializedList.map { message ->
|
||||||
is SmsBackup -> message.copy(subscriptionId = -1)
|
// workaround for messages not being imported on Android 14 when the device has a different subscriptionId (see #191)
|
||||||
is MmsBackup -> message.copy(subscriptionId = -1)
|
when (message) {
|
||||||
|
is SmsBackup -> message.copy(subscriptionId = -1)
|
||||||
|
is MmsBackup -> message.copy(subscriptionId = -1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
deserializedList
|
||||||
}
|
}
|
||||||
|
|
||||||
ImportMessagesDialog(activity, messages)
|
ImportMessagesDialog(activity, messages)
|
||||||
} catch (e: SerializationException) {
|
} catch (e: SerializationException) {
|
||||||
activity.toast(org.fossify.commons.R.string.invalid_file_format)
|
activity.toast(org.fossify.commons.R.string.invalid_file_format)
|
||||||
|
|
@ -195,7 +209,10 @@ class MessagesImporter(private val activity: SimpleActivity) {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isXmlMimeType(mimeType: String): Boolean {
|
private fun isXmlMimeType(mimeType: String): Boolean {
|
||||||
return mimeType.equals("application/xml", ignoreCase = true) || mimeType.equals("text/xml", ignoreCase = true)
|
return mimeType.equals("application/xml", ignoreCase = true) || mimeType.equals(
|
||||||
|
"text/xml",
|
||||||
|
ignoreCase = true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isJsonMimeType(mimeType: String): Boolean {
|
private fun isJsonMimeType(mimeType: String): Boolean {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue