Check for EXTRA_TEXT if we cannot parse EXTRA_STREAM.

fork-5.53.8
Alex Hart 2022-08-29 10:47:47 -03:00
rodzic 4a3b8af6af
commit 3d075bdd65
1 zmienionych plików z 12 dodań i 4 usunięć

Wyświetl plik

@ -168,17 +168,25 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
intent.action == Intent.ACTION_SEND && intent.hasExtra(Intent.EXTRA_STREAM) -> {
intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)?.let {
Result.success(UnresolvedShareData.ExternalSingleShare(it, intent.type))
} ?: Result.failure(IntentError.SEND_STREAM)
} ?: extractSingleExtraTextFromIntent(IntentError.SEND_STREAM)
}
intent.action == Intent.ACTION_SEND && intent.hasExtra(Intent.EXTRA_TEXT) -> {
intent.getCharSequenceExtra(Intent.EXTRA_TEXT)?.let {
Result.success(UnresolvedShareData.ExternalPrimitiveShare(it))
} ?: Result.failure(IntentError.SEND_TEXT)
extractSingleExtraTextFromIntent()
}
else -> null
} ?: Result.failure(IntentError.UNKNOWN)
}
private fun extractSingleExtraTextFromIntent(fallbackError: IntentError = IntentError.UNKNOWN): Result<UnresolvedShareData, IntentError> {
return if (intent.hasExtra(Intent.EXTRA_TEXT)) {
intent.getCharSequenceExtra(Intent.EXTRA_TEXT)?.let {
Result.success(UnresolvedShareData.ExternalPrimitiveShare(it))
} ?: Result.failure(IntentError.SEND_TEXT)
} else {
Result.failure(fallbackError)
}
}
private fun ensureFragment(resolvedShareData: ResolvedShareData) {
if (!supportFragmentManager.isStateSaved && supportFragmentManager.fragments.none { it is MultiselectForwardFullScreenDialogFragment }) {
supportFragmentManager.beginTransaction()