by Guest » 20 Jan 2025, 12:44
Ich würde gerne wissen, wie ich herausfinden kann, auf welche Anwendung der Benutzer im Dialog zum Teilen von Inhalten geklickt hat. Ich verwende derzeit diese Methode:
Code: Select all
private fun showNativeShareDialog(contentUri: Uri) {
val intent = Intent(Intent.ACTION_SEND).apply {
type = "image/*"
putExtra(Intent.EXTRA_STREAM, contentUri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
val chooserIntent = Intent.createChooser(intent, "Compartir imagen")
shareResultLauncher.launch(chooserIntent)
}
private val shareResultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == RESULT_OK) {
val chosenComponent = result.data?.getStringExtra(Intent.EXTRA_CHOSEN_COMPONENT)
chosenComponent?.let { packageName ->
when {
packageName.contains("whatsapp") -> {
// Usuario eligió WhatsApp
}
packageName.contains("instagram") -> {
// Usuario eligió Instagram
}
// etc...
}
}
}
}
Das Problem, das ich dabei habe, ist, dass ich davon abhängig bin, wie die Zielanwendung konfiguriert ist. Normalerweise erhalte ich beim Teilen und Zurückkehren einen Ergebniscode vom Typ RESULT_CANCELLED. Gibt es einen? Wie erkennt man, wann es gedrückt wird, bevor zur Ziel-App navigiert wird?
Ich würde gerne wissen, wie ich herausfinden kann, auf welche Anwendung der Benutzer im Dialog zum Teilen von Inhalten geklickt hat. Ich verwende derzeit diese Methode:
[code] private fun showNativeShareDialog(contentUri: Uri) {
val intent = Intent(Intent.ACTION_SEND).apply {
type = "image/*"
putExtra(Intent.EXTRA_STREAM, contentUri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
val chooserIntent = Intent.createChooser(intent, "Compartir imagen")
shareResultLauncher.launch(chooserIntent)
}
private val shareResultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == RESULT_OK) {
val chosenComponent = result.data?.getStringExtra(Intent.EXTRA_CHOSEN_COMPONENT)
chosenComponent?.let { packageName ->
when {
packageName.contains("whatsapp") -> {
// Usuario eligió WhatsApp
}
packageName.contains("instagram") -> {
// Usuario eligió Instagram
}
// etc...
}
}
}
}
[/code]
Das Problem, das ich dabei habe, ist, dass ich davon abhängig bin, wie die Zielanwendung konfiguriert ist. Normalerweise erhalte ich beim Teilen und Zurückkehren einen Ergebniscode vom Typ RESULT_CANCELLED. Gibt es einen? Wie erkennt man, wann es gedrückt wird, bevor zur Ziel-App navigiert wird?