Add intent-filter to open any text based file

This commit is contained in:
PhilKes 2025-05-05 18:25:36 +02:00 committed by Phil
parent 771546a0cb
commit 724d08507a
2 changed files with 44 additions and 8 deletions

View file

@ -77,6 +77,21 @@
<data android:mimeType="*/*" /> <data android:mimeType="*/*" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" android:mimeType="text/*" />
<data android:scheme="content" android:mimeType="text/*" />
<data android:scheme="file" android:mimeType="application/json" />
<data android:scheme="content" android:mimeType="application/json" />
<data android:scheme="file" android:mimeType="application/xml" />
<data android:scheme="content" android:mimeType="application/xml" />
</intent-filter>
</activity> </activity>
<activity android:name=".presentation.activity.note.ViewImageActivity" /> <activity android:name=".presentation.activity.note.ViewImageActivity" />

View file

@ -188,14 +188,15 @@ abstract class EditActivity(private val type: Type) :
if (persistedId == null || notallyModel.originalNote == null) { if (persistedId == null || notallyModel.originalNote == null) {
notallyModel.setState(id) notallyModel.setState(id)
} }
if ( if (notallyModel.isNewNote) {
notallyModel.isNewNote && when (intent.action) {
intent.action in setOf(Intent.ACTION_SEND, Intent.ACTION_SEND_MULTIPLE) Intent.ACTION_SEND,
) { Intent.ACTION_SEND_MULTIPLE -> handleSharedNote()
handleSharedNote() Intent.ACTION_VIEW -> handleViewNote()
} else if (notallyModel.isNewNote) { else ->
intent.getStringExtra(EXTRA_DISPLAYED_LABEL)?.let { intent.getStringExtra(EXTRA_DISPLAYED_LABEL)?.let {
notallyModel.setLabels(listOf(it)) notallyModel.setLabels(listOf(it))
}
} }
} }
@ -756,6 +757,26 @@ abstract class EditActivity(private val type: Type) :
} }
} }
private fun handleViewNote() {
val text =
intent.data?.let { uri ->
contentResolver.openInputStream(uri)?.use { inputStream ->
inputStream.bufferedReader().readText()
}
?: run {
showToast(R.string.cant_load_file)
null
}
} ?: intent.getStringExtra(Intent.EXTRA_TEXT)
val title = intent.getStringExtra(Intent.EXTRA_SUBJECT)
if (text != null) {
notallyModel.body = Editable.Factory.getInstance().newEditable(text)
}
if (title != null) {
notallyModel.title = title
}
}
@RequiresApi(24) @RequiresApi(24)
override fun recordAudio() { override fun recordAudio() {
val permission = Manifest.permission.RECORD_AUDIO val permission = Manifest.permission.RECORD_AUDIO