【发布时间】: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