【问题标题】:intent-filter for a service : using a custom mime type服务的意图过滤器:使用自定义 mime 类型
【发布时间】:2013-05-04 05:18:51
【问题描述】:

我想添加一个自定义 mime,以便我的 Android 服务或 BroadcastReceiver 能够检测到我的自定义文件。 我看过How to add custom mime type?How to add custom mime type? 等问题的答案

这里的答案是针对一个活动显示的。但是 service 或者 BroadcastReceiver 需要做哪些修改呢?我为他们尝试了相同的代码,但它不起作用。 我是android开发的新手。欢迎提供一些漂亮而详细的解释。可能吗? 我哪里错了。

我使用的代码是:

   <service android:name="XcardReceivedService"
        android:exported="true"
        android:enabled="true">


           <intent-filter>
                    <!--   <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                    -->
                    <data android:scheme="file" />
                    <data android:mimeType="*/*" />
                    <data android:pathPattern=".*\\.Xcard" />
                    <data android:host="*" />
</intent-filter>


      </service>

【问题讨论】:

  • 您几乎从不将 MIME 类型用于服务或广播接收器。您能否完整解释一下“检测我的自定义文件”是什么意思?
  • 我对 android 非常陌生。我在我的 SD 卡上创建了一个名为 "card.Xcard" 的文件。我想在用户单击该文件时开始一项活动。但在活动开始之前,我想将该文件中的数据添加到数据库中。为此,我想编写一个服务或广播接收器。
  • 我想在添加到数据库的数据的活动中显示详细信息。还有其他可能的方法吗?可以以这种方式实现它:假设我有活动 A,它显示数据库中的数据。它可以由来自其他活动的意图或当用户单击“.Xcard”类型的文件时启动。但是,那么我应该如何区分“活动的启动方式”与其他活动或用户单击此文件时的区别。
  • 因为当activity A从其他activity启动时,它只需要从数据库中获取数据并显示,但是当它必须在用户点击文件时启动时,它首先必须更新数据库,然后显示

标签: android service broadcastreceiver android-manifest intentfilter


【解决方案1】:

但在活动开始之前,我想将该文件中的数据添加到数据库中

你必须在活动中这样做。

或者我想写一个服务或广播接收器的目的。

文件不会在服务或广播接收器中打开。

还有其他可能的方法吗?

将您的代码放入您的活动中。

我应该如何区分“活动是如何开始的”与其他活动或用户单击此文件时的区别。

检查用于开始您的活动的Intent。你通过getIntent() 得到这个Intent。您可以在Intent 上调用getData() 以获取与之关联的Uri。如果这不是null,它应该是你的文件的路径。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-08-04
  • 2021-02-13
  • 2022-12-08
  • 2013-05-03
  • 2014-08-19
  • 1970-01-01
  • 2021-08-09
  • 2020-05-15
相关资源
最近更新 更多