Intent.Createchooser () Broadcastreceiver не вызывается - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь выяснить, что выбирают пользователи приложения, когда делятся контентом из моего приложения.Для этого я использую 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")
}

1 Ответ

0 голосов
/ 22 апреля 2019

Я считаю, что проблема заключается в создании объекта Intent.Вместо

val receiver = Intent(context, BroadcastReceiver::class.java)

должно быть,

val receiver = Intent(context, ShareBroadcastReceiver::class.java)
...