Несколько широковещательных действий в одном приемнике не работают - PullRequest
0 голосов
/ 26 апреля 2018

Я создаю приложение, которое будет отправлять мне события различных действий, Я добавил следующие события в одном классе, который работает отлично.

<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 голосов
/ 26 апреля 2018

Когда вы добавляете элемент <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>
...