【问题标题】:How to add custom mime type in Android?如何在 Android 中添加自定义 mime 类型?
【发布时间】:2013-08-10 07:09:19
【问题描述】:

我有上传文件的特殊服务。上传完成后,我从我的服务发送一个广播 - 其中包含一个特殊的序列化对象。这个对象可能是许多类的一个实例。 为了识别这个对象类,我使用了自定义意图类型。

外观:

// Sending broadcast
Intent intent = new Intent(UploaderService.ACTION_UPLOAD_SUCCESSFULLY);
intent.setType(UploaderService.TYPE_DOC);
intent.putExtra(UploaderService.FIELD_RESULT, object);
context.sendBroadcast(intent);

// Registering receiver
IntentFilter filter = new IntentFilter(UploaderService.ACTION_UPLOAD_SUCCESSFULLY);
filter.addDataType(UploaderService.TYPE_DOC);
registerReceiver(receiver, filter);

在注册接收器期间,我捕获了IntentFilter.MalformedMimeTypeExceptionTYPE_DOC 常量看起来像 "vnd.com.my.package.doc"

所以,我想,我的 mime 类型必须在系统中注册。我如何在代码中做到这一点?

【问题讨论】:

  • "vnd.com.my.package.doc" 是一个 ContentProvider。你注册了 ContentProvider 吗?

标签: android android-intent mime-types


【解决方案1】:

所以,我想,我的 mime 类型必须在系统中注册。

不,您需要使用有效的 MIME 类型构造。 vnd.com.my.package.doc 是格式错误的 MIME 类型。使用application/vnd.com.my.package.doc 作为供应商前缀的 MIME 类型。

请注意,在广播中使用 MIME 类型是相当不寻常的行为。

【讨论】:

  • 谢谢,现在可以了。您可以建议什么替代方法来识别对象类别?服务器可以返回其中的几个,我应该将它们传递给活动。通过 Intent extra 传递类型?
  • @bvitaliyg:“您可以建议什么替代方法来识别对象类别?” -- 把类型的信息放在一个额外的地方。
  • @CommsWare 为什么你说使用 MIME 类型很不寻常?
  • @OladipoOlasemo:我不记得曾在Intent 广播中看到过 MIME 类型。因此,如果它真的发生了,那是相当不寻常的。 MIME 类型有时用于Intents 用于启动活动,仅此而已。
猜你喜欢
  • 2011-08-10
  • 2012-01-19
  • 1970-01-01
  • 2013-02-07
  • 2014-08-12
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多