单个接收器中的多个广播操作无法正常使用PACKAGE_ADDED和PACKAGE_REMOVED添加<data android:scheme =“package”>

时间:2018-04-26 11:23:37

标签: android android-studio broadcastreceiver android-broadcastreceiver

我正在创建一个应用程序,它将向我发送各种操作的事件, 我已经在单一类中添加了波纹管事件,这种事件非常有效。

<receiver android:name=".activity.SettingsEventReceiver" >
    <intent-filter>
        <!--*************Bluetooth*********************-->
        <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />

        <!--*************Hotspot*********************-->
        <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />

        <!--*************AirplaneMode*********************-->
        <action android:name="android.intent.action.AIRPLANE_MODE"/>

        <!--*************VolumeChange*********************-->
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />

        <!--*************ChargingSettings*********************-->
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />

        <!--*************Sim status changed Event*********************-->
        <action android:name="android.intent.action.SIM_STATE_CHANGED" />

        <!--*************Reboot Event*********************-->
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON"/>

    </intent-filter>
</receiver>

但每当我添加下面的动作时,我都不会收到单个事件

<!--*************Install/Uninstall Event*********************-->
    <action android:name="android.intent.action.PACKAGE_ADDED"/>
    <action android:name="android.intent.action.PACKAGE_REMOVED"/>
    <action android:name="android.intent.action.PACKAGE_FIRST_LAUNCH"/>
    <data android:scheme="package" />

我如何克服这个问题? 请帮忙

1 个答案:

答案 0 :(得分:1)

<data>元素添加到<intent-filter>时,您只会获得与该<data>元素匹配的广播事件。您列出的大多数广播Intent都不包含任何数据。

您可以指定多个<intent-filter>,如下所示:

<receiver android:name=".activity.SettingsEventReceiver" >
    <intent-filter>
        <!--*************Bluetooth*********************-->
        <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />

        <!--*************Hotspot*********************-->
        <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />

        <!--*************AirplaneMode*********************-->
        <action android:name="android.intent.action.AIRPLANE_MODE"/>

        <!--*************VolumeChange*********************-->
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />

        <!--*************ChargingSettings*********************-->
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />

        <!--*************Sim status changed Event*********************-->
        <action android:name="android.intent.action.SIM_STATE_CHANGED" />

        <!--*************Reboot Event*********************-->
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON"/>

    </intent-filter>

    <intent-filter>
        <!--*************Install/Uninstall Event*********************-->
        <action android:name="android.intent.action.PACKAGE_ADDED"/>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <action android:name="android.intent.action.PACKAGE_FIRST_LAUNCH"/>
        <data android:scheme="package" />
    </intent-filter>
</receiver>