Как получить EXTRA_CHOSEN_COMPONENT при обратном вызове результата для RememberLauncherForActivityResult?Android

Форум для тех, кто программирует под Android
Ответить
Гость
 Как получить EXTRA_CHOSEN_COMPONENT при обратном вызове результата для RememberLauncherForActivityResult?

Сообщение Гость »

Я пытаюсь узнать, какое приложение выбрал пользователь после того, как поделился контентом из моего приложения с внешними службами. Код выглядит следующим образом. По сути, я следовал инструкциям Google для получения данных.

Код: Выделить всё

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_MUTABLE используется в документе Google, но это неосуществимо [Ссылка]. Их документ кажется устаревшим.

Вместо этого я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»