【问题标题】:Catch file sent with Intent捕获使用 Intent 发送的文件
【发布时间】:2015-08-13 06:13:23
【问题描述】:

有一个应用程序(Graph Paper)以 PDF 格式将数据导出到一组有限的应用程序,其中包括 Google Drive、Dropbox、GMail 等,但没有普通文件系统或网络。

那么,如何构建能够捕获此 PDF 的应用程序?我只想将它保存在 sdcard 上,或者通过管道传输到 netcat 可以保存它的 IP。我阅读了很多关于如何使用Intent.ACTION_SEND 发送文件的帖子,但找不到任何可以接收的内容。一定很明显,但我从来没有为 Android 写过。

【问题讨论】:

  • application ... that exports data in PDF to a limited set of applications, 。好吧,这不是我的看法。您建议 Graph Paper 限制可以接收其 pdf 文件的应用程序。但是 Graph Paper 对可以接收 pdf 的应用程序集没有影响。相反,Graph Paper 以 ACTION_SEND 开始意图。并且取决于您在设备上安装的应用程序,这些应用程序告诉操作系统他们可以并且想要处理 pdf 文件,当 PG 打算使用其 pdf 时,用户可以在这些应用程序之间进行选择。当然纯文本应用程序不能处理 pdf 文件。
  • @greenapps,我怀疑 Graph Paper 没有正确设置 PDF 类型。我在列表中只看到通用应用程序,而不是明确使用 PDF 的应用程序。
  • 商店中有 IntentIntercept 等应用程序。他们告诉你使用的意图实际上是怎样的。知道您可以调整清单文件。
  • 或者...@greenapps,您可以让接收器监听所有意图并查看相应的数据(这就是该应用正在执行的操作):)
  • you could just have a receiver listen to all intent。你会怎么做?据我所知,不能听所有意图。 On 必须为每个想要接收的意图进行注册。如果您知道如何聆听所有意图,请告诉。

标签: android android-intent android-sharing


【解决方案1】:

如果您能找出mimeType,您也许可以通过类似下面的方式添加您的应用程序来服务请求:

    <activity class=".NoteEditor" android:label="@string/title_note">
         <intent-filter android:label="@string/resolve_edit">
             <action android:name="android.intent.action.SEND" />
             <category android:name="android.intent.category.DEFAULT" />
             <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
         </intent-filter>
     </activity>

这似乎是 pdf mimeType 的标准:

Proper MIME media type for PDF files

参考文献

http://developer.android.com/reference/android/content/Intent.html

【讨论】:

  • 我怀疑 MIME 类型设置为通用类型,因为 PDF 查看器不在可供选择的应用程序列表中。
  • mimeType 用于处理特定类型的数据。请注意,mimeType 与应用程序无关,它与识别传入的数据有关。
  • 如果可以在 XML 中完成,那么也可以在代码中完成。但是看@@developer.android.com/reference/android/content/Intent.html;对于标准,您可能应该在 XML 中执行此操作。大多数应用程序都有一个处理特定意图/数据的活动/服务。我之所以这么说是因为当意图解析发生时,它会查看可以处理这些特定数据的活动,然后为那些可以处理它的人构建一个选择器。
  • 谢谢。从答案不清楚我应该将接收文件并将其保存到磁盘的代码放在哪里。你能澄清一下吗?
  • 通常当一个Activity启动时,你可以通过getIntent()获取启动它的intent,然后你大概可以从那里弄清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多