【问题标题】:How to get results via BroadcastReceiver from a given IntentSender如何通过 BroadcastReceiver 从给定的 IntentSender 获取结果
【发布时间】:2021-04-16 17:04:32
【问题描述】:

我知道如何做以下事情

  • 通过BroadcastReceiver 获取PendingIntent 的结果(例如,启动选择器并在用户做出选择后获取结果)
  • 通过调用startIntentSenderForResult,通过活动的onActivityResult 获取IntentSender 的结果

但是,我需要做的是启动IntentSender,但通过BroadcastReceiver 获取结果。注意IntentSender是给我的,所以我无法访问与IntentSender对应的原始PendingIntent

有没有办法做到这一点,也许通过将额外的意图捆绑到intentSender.sendIntent()

我还阅读了this question 并验证了sendIntent() 中的onFinished 回调会立即触发并且实际上并未返回正在启动的意图的结果。

上下文 我正在使用 Android 的 CompanionDeviceManagercompanion device pairing。当它找到一个设备时,它会给我IntentSender chooserLauncher。它期望一个活动用chooserLauncher 调用startIntentSenderForResult() 并从活动中获取结果。但是,这对我不起作用,因为我正在开发一个库,我不希望将结果传递给活动,而是传递给我拥有的 BroadcastReceiver

【问题讨论】:

    标签: android android-intent android-pendingintent


    【解决方案1】:

    这是不可能的。

    只有Activity 可以调用startActivityForResult(),这将启动Activity。结果只能返回到onActivityResult() 中的Activity。无法将结果直接返回给BroadcastReceiver。那样不行。

    您必须让您图书馆的用户在他的Activity.onActivityResult() 中接收结果,并通过您可以提供的任何方式将其传递给您的图书馆。

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多