如何在接收器中使用<intent-filter>

时间:2016-03-25 12:37:17

标签: android

我希望在安装时监控应用。我知道我应该使用广播接收器,我也应该添加

 <receiver android:name="com.gr.xxx">
    <intent-filter >
        <action android:name="android.intent.action.PACKAGE_ADDED"/>
        <action android:name="android.intent.action.PACKAGE_REPLACED"/>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
    </intent-filter>
</receiver>

在mainifest中。但是,如果我不写这个<data android:scheme="package"/>,它将无效。

我的问题是:我怎么知道是否应该写<data>。我该怎么写这个计划?

1 个答案:

答案 0 :(得分:0)

  

但是如果我不写这个就行不通。

正确。

大多数广播Intents没有填写Uri来填充&#34;数据&#34; facet,这就是为什么您通常在<data>元素的<intent-filter>元素中看不到<receiver>元素的原因。但是,与软件包相关的广播会在package:中添加Uri Intent,因此您需要将其包含在过滤器中。

  

我怎么知道是否应该写

在这种情况下,这些Intent操作的文档具有&#34;数据包含包的名称&#34;。这个小小的陈述是告诉你需要一个<data>元素的线索。但是,它没有告诉你这个方案是什么,这就是为什么你最终搜索互联网以找出你的<intent-filter>无效的原因。几天前,我遇到了同样的Intent行动,遇到了这个问题。

理想情况下,文档会更好。理想情况下,我会有头发。

  

我该怎么写这个计划?

这可能是UriIntent可能使用的方案。

您将使用<activity>进行更多操作,您将在其中看到content:计划,file:计划很多(尽管正在减少),有时http:https:计划。这是因为我们使用Uri Activity的频率高于使用UriBroadcastReceiver的{​​{1}}。