diff --git a/AnkiDroid/src/main/AndroidManifest.xml b/AnkiDroid/src/main/AndroidManifest.xml
index ba8d6f6cc241..c309eb61c2f5 100644
--- a/AnkiDroid/src/main/AndroidManifest.xml
+++ b/AnkiDroid/src/main/AndroidManifest.xml
@@ -241,6 +241,8 @@
+
+
diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/IntentHandler.kt b/AnkiDroid/src/main/java/com/ichi2/anki/IntentHandler.kt
index d6164158555d..6f2075c69247 100644
--- a/AnkiDroid/src/main/java/com/ichi2/anki/IntentHandler.kt
+++ b/AnkiDroid/src/main/java/com/ichi2/anki/IntentHandler.kt
@@ -299,6 +299,14 @@ class IntentHandler : AbstractIntentHandler() {
private const val CLIPBOARD_INTENT = "com.ichi2.anki.COPY_DEBUG_INFO"
private const val CLIPBOARD_INTENT_EXTRA_DATA = "clip_data"
+ private val textMimeTypes =
+ setOf(
+ "text/tab-separated-values",
+ "text/tsv",
+ "text/comma-separated-values",
+ "text/csv",
+ )
+
private fun isValidViewIntent(intent: Intent): Boolean {
// Negating a negative because we want to call specific attention to the fact that it's invalid
// #6312 - Smart Launcher provided an empty ACTION_VIEW, no point in importing here.
@@ -333,8 +341,7 @@ class IntentHandler : AbstractIntentHandler() {
val mimeType = intent.resolveMimeType()
when {
mimeType?.startsWith("image/") == true -> LaunchType.IMAGE_IMPORT
- mimeType == "text/tab-separated-values" ||
- mimeType == "text/comma-separated-values" -> LaunchType.TEXT_IMPORT
+ textMimeTypes.contains(mimeType) -> LaunchType.TEXT_IMPORT
else -> LaunchType.FILE_IMPORT
}
} else if ("com.ichi2.anki.DO_SYNC" == action) {
diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ImportFileSelectionFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ImportFileSelectionFragment.kt
index 2675d6da36e1..63852ac8c5dd 100644
--- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ImportFileSelectionFragment.kt
+++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ImportFileSelectionFragment.kt
@@ -103,6 +103,7 @@ class ImportFileSelectionFragment : DialogFragment() {
"text/comma-separated-values",
"text/csv",
"text/tab-separated-values",
+ "text/tsv",
),
),
)
diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/IntentHandlerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/IntentHandlerTest.kt
index bc60042fdf3c..911496e58672 100644
--- a/AnkiDroid/src/test/java/com/ichi2/anki/IntentHandlerTest.kt
+++ b/AnkiDroid/src/test/java/com/ichi2/anki/IntentHandlerTest.kt
@@ -96,10 +96,14 @@ class IntentHandlerTest {
fun textImportIntentReturnsTextImport() {
testIntentType("content://valid", "text/tab-separated-values", LaunchType.TEXT_IMPORT)
testIntentType("content://valid", "text/comma-separated-values", LaunchType.TEXT_IMPORT)
+ testIntentType("content://valid", "text/csv", LaunchType.TEXT_IMPORT)
+ testIntentType("content://valid", "text/tsv", LaunchType.TEXT_IMPORT)
// Test for ACTION_SEND
testIntentType("content://valid", "text/tab-separated-values", LaunchType.TEXT_IMPORT, Intent.ACTION_SEND)
testIntentType("content://valid", "text/comma-separated-values", LaunchType.TEXT_IMPORT, Intent.ACTION_SEND)
+ testIntentType("content://valid", "text/csv", LaunchType.TEXT_IMPORT, Intent.ACTION_SEND)
+ testIntentType("content://valid", "text/tsv", LaunchType.TEXT_IMPORT, Intent.ACTION_SEND)
}
private fun testIntentType(