Я пытаюсь выяснить, что выбирают пользователи приложения, когда делятся контентом из моего приложения.Для этого я использую Inten.createChooser с настраиваемым приемником вещания.К сожалению, я не могу заставить получателя действительно вызываться.
На Android 9 я пробовал несколько разных комбинаций регистрации получателя.Делая это экспортированным true / false, добавляя и удаляя intent-фильтры (хотя я действительно не могу найти ничего, связанного с chooser).Сам share-chooser работает просто отлично, и мои изображения передаются.Это просто вещательный приемник, который не запускается.В logcat я вижу, что PackageManager нашел и зарегистрировал получателя.
AndroidManifest.xml (я знаю, что экспортированный -не должен быть нужен)
<receiver android:name=".receivers.ShareBroadcastReceiver"
android:enabled="true"
android:exported="false">
</receiver
Код, который создаетподелиться намерением (сделано во фрагменте, если это имеет значение)
private fun startShareIntent(image: Bitmap){
val receiver = Intent(context, BroadcastReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT)
val intent = Intent(Intent.ACTION_SEND)
intent.type = "image/jpg"
// saveTempFile creates a temporary share:able file of the image and returns it's URI.
intent.putExtra(Intent.EXTRA_STREAM, saveTempFile(image))
if (intent.resolveActivity(context!!.packageManager) != null) {
startActivity(Intent.createChooser(intent,
getString(R.string.share_menu_title),
pendingIntent.intentSender))
}
}
class ShareBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.d("ShareBroadcastReceiver", "Received broadcast")
}