Код: Выделить всё
val shareResultLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { result ->
val intent: Intent? = result.data
val clickedComponent: ComponentName? = intent?.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}
// The below code is executed on click a button
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_STREAM, cacheUri)
type = "image/jpg"
}
val pendingIntent = PendingIntent.getBroadcast(
context,
0,
Intent(),
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
val chooserIntent = Intent.createChooser(shareIntent, null, pendingIntent.intentSender)
shareResultLauncher.launch(chooserIntent)
- Когда я делюсь этим в Slack, намерение равно нулю во-первых.
- Когда я делюсь им в X (например, в Twitter), намерение существует, но clickedComponent имеет значение null.
Вместо этого я использую PendingIntent.FLAG_IMMUTABLE, поскольку он необходим, как показывает следующая ошибка.
java.lang.IllegalArgumentException: ai.airfriend.airfriend.staging: для ориентации на S+ (версия 31 и выше) требуется, чтобы при создании PendingIntent был указан один из FLAG_IMMUTABLE или FLAG_MUTABLE.
Настоятельно рассмотрите возможность использования FLAG_IMMUTABLE , используйте FLAG_MUTABLE только в том случае, если какая-то функциональность зависит от изменяемого PendingIntent, например. если его необходимо использовать со встроенными ответами или всплывающими подсказками.
После некоторых исследований мне удалось получить некоторую информацию, но она выглядит неправильно. сделать для меня. Чего мне не хватает?
Код: Выделить всё
val shareResultLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { result ->
val intent: Intent? = result.data
val clickedComponent = intent?.getStringExtra("content_view_result:data")
}

Подробнее здесь: https://stackoverflow.com/questions/781 ... launcherfo
Мобильная версия