【问题标题】:Intent.Createchooser() Broadcastreceiver is not calledIntent.Createchooser() Broadcastreceiver 没有被调用
【发布时间】: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


    【解决方案1】:

    我认为问题在于创建 Intent 对象。而不是

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

    应该是,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      相关资源
      最近更新 更多