【问题标题】:Not understanding IntentFilters不了解 IntentFilter
【发布时间】:2020-06-21 04:29:39
【问题描述】:

我正在尝试使用 Google 云端硬盘中的“发送副本”菜单项将二进制文件(我自己的定制内容,不是标准内容)从 Google 云端硬盘复制到我的应用程序中。

我查看了 Google Drive 使用 Intent Intercept 发送的意图,它基本上是

  • 动作 - android.intent.action.SEND
  • 数据 - 空
  • MIME - 应用程序/八位字节流
  • URI - 意图:#intent;action=android.intent.action.SEND;type=application/octet-stream;launchFlags=0x1b080000;end
  • 标志 - FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET FLAG_ACTIVITY_FORWARD_RESULT FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT FLAG_ACTIVITY_PREVIOUS_IS_TOP FLAG_RECEIVER_FOREGROUND
  • 附加功能 - 第1类:android.net.Uri $ HierarchicalUri键:android.intent.extra.STREAM值:内容://com.google.android.apps.docs.storage.legacy/enc%3Dy1Gjnka2NiGyk8sKV0CwRjnjL3WimTTirLdLn58FBZ7yVAJ2MPJNL_ZYQFzzl0a3pi0bnikAy29Y%0AcprYV_o8bxcPbb8r0Vv_wfq89BjBp1nQHOPUT8CiHQEzPwVwRhvByYmijg% 3D%3D%0A

我的应用相关活动中的意图过滤器是:

    <intent-filter>
        <action android:name="android.intent.action.SEND" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:mimeType="application/octet-stream" />
    </intent-filter>

经过一番处理后,它现在确实显示在 Google 云端硬盘的“发送文件”列表中。

如果我选择我的应用程序作为目标,它会出现在相关活动的 onCreate() 中,我可以使用 getIntent() 来确定意图,但是 getData() - 这是我过去与 ACTION_VIEW 一起使用的来自其他地方的意图 - 返回 null,这可能并不奇怪,因为 Data 在上面的意图中被列为 null。

我完全不确定(以我有限的知识并阅读了“从其他应用程序接收简单数据”文档)是下一步该做什么。如何访问文件数据以便进行复制?

下一个问题,假设我确实成功了(有有用的答案),如果我想从 Google Drive 一次发送多个文件,在我看来它将使用 SEND_MULTIPLE 意图,那么我将如何访问那么每个文件数据呢?

【问题讨论】:

    标签: android android-intent intentfilter


    【解决方案1】:

    如何访问文件数据以便进行复制?

    指向共享内容的Uri 位于EXTRA_STREAM 中。在Intent 上调用getParcelableExtra() 以检索它。然后,您可以使用ContentResolveropenInputStream() 读入由Uri 标识的内容。

    extra的值如何获取在the documentation中介绍。

    然后它将使用 SEND_MULTIPLE 意图,那么我将如何访问每个文件的数据?

    EXTRA_STREAM 现在将是Uri 值的列表。在Intent 上致电getParcelableArrayListExtra() 以检索它。然后,您可以遍历该列表并使用 ContentResolveropenInputStream() 来获取由 Uri 标识的内容。

    和之前一样,额外的值如何获取由the documentation覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多