【发布时间】:2019-04-22 12:57:11
【问题描述】:
我试图弄清楚用户在分享我的应用中的内容时会选择哪些应用。为了实现这一点,我将 Inten.createChooser 与自定义广播接收器一起使用。不幸的是,我似乎无法真正调用接收器。
运行 Android 9,我尝试了几种不同的接收器注册组合。使其导出真/假,添加和删除意图过滤器(尽管我真的找不到与选择器相关的任何内容)。共享选择器本身工作得很好,我的图像被共享。只是广播接收器没有触发。我可以在 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")
}
【问题讨论】:
标签: android android-intent kotlin broadcastreceiver