Intent.Createchooser() Broadcastreceiver 没有被调用
Intent.Createchooser() Broadcastreceiver is not called
我想弄清楚用户在从我的应用程序中分享内容时会选择什么应用程序。为此,我将 Inten.createChooser 与自定义广播接收器一起使用。不幸的是,我似乎无法真正调用接收器。
运行 Android 9、我尝试了几种不同的接收器注册组合。使其导出 true/false,添加和删除意图过滤器(尽管我真的找不到与选择器相关的任何内容)。共享选择器本身工作正常,我的图像被共享。只是没有触发的广播接收器。我可以在 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")
}
我认为问题在于创建 Intent
对象。而不是
val receiver = Intent(context, BroadcastReceiver::class.java)
应该是,
val receiver = Intent(context, ShareBroadcastReceiver::class.java)
我想弄清楚用户在从我的应用程序中分享内容时会选择什么应用程序。为此,我将 Inten.createChooser 与自定义广播接收器一起使用。不幸的是,我似乎无法真正调用接收器。
运行 Android 9、我尝试了几种不同的接收器注册组合。使其导出 true/false,添加和删除意图过滤器(尽管我真的找不到与选择器相关的任何内容)。共享选择器本身工作正常,我的图像被共享。只是没有触发的广播接收器。我可以在 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")
}
我认为问题在于创建 Intent
对象。而不是
val receiver = Intent(context, BroadcastReceiver::class.java)
应该是,
val receiver = Intent(context, ShareBroadcastReceiver::class.java)