Зачем Intent.createChooser() нужен BroadcastReceiver и как это реализовать?

Следующий фрагмент, вызванный из моей реализации onOptionsItemSelected(), отлично работает для переноса пользователя из моего приложения в почтовый клиент с адресом электронной почты, темой и телом сообщения. -заполненный. Я использую это как простой способ дать пользователю возможность оставить отзыв.

String uriText =
    "mailto:" + emailAddress +
    "?subject=" + subject +
    "&body=" + body;

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uriText));
startActivity(Intent.createChooser(emailIntent, "Pick an email app:"));

Когда открывается почтовое приложение (на моем Nexus S с Android 4.0.4), LogCat выводит следующее, и я не могу понять, почему; Поиски Google и SO для createChooser unregisterReceiverкажутся бесплодными, и я не могу найти много примеров createChooser(), которые также вызывают unregisterReceiver()таким образом, чтобы помогает в этой ситуации.

04-08 21:26:19.094: E/ActivityThread(27894): Действие com.android.internal.app.ChooserActivity привело к утечке IntentReceiver com.android.internal.app.ResolverActivity$1@4150aac8, который изначально был зарегистрирован здесь. Вы пропустили вызов unregisterReceiver()?

04-08 21:26:19.094: E/ActivityThread(27894): android.app.IntentReceiverLeaked: Активность com.android.internal.app.ChooserActivity просочилась в IntentReceiver com.android.internal.app.ResolverActivity$1@4150aac8 который изначально был зарегистрирован здесь. Вы пропустили вызов unregisterReceiver()?

04-08 21:26:19.094: E/ActivityThread(27894): at android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:763)

Это похоже на ошибку Android, потому что мой собственный код не вызывает registerReceiver(), так почему же Android жалуется, что мне нужно вызвать unregisterReceiver()?

13
задан Jacob Marble 23 April 2012 в 22:07
поделиться