Ограничить приемник вещания приложением - PullRequest
2 голосов
/ 20 апреля 2011

Я работаю на приемнике вещания и застрял в проблеме.

Я получаю широковещательный приемник в файле манифеста.

<receiver class=".MyClass" android:name=".MyClass">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            </intent-filter>
    </receiver>

это работает нормально и вызывает MyClass всякий раз, когда происходит изменение соединения.

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

Я попробовал это, расширив BroadcastReceiver, регистрируя и отменяя регистрацию трансляции в этом файле класса, и это работает. Но я хочу добиться того же самого файла манифеста.

Моя проблема решится, если она не получит ничего, когда приложение не открыто.

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

То, что вы говорите, невозможно. Вся цель наличия фильтра намерений в манифесте состоит в том, чтобы получить намерение независимо от того, запущено ваше приложение или нет. Единственный способ сделать то, что вы хотите - это зарегистрировать / отменить регистрацию получателя с помощью кода [registerReceiver]

0 голосов
/ 17 декабря 2013

Вы сказали: «Моя проблема решится, если она ничего не получит, когда приложение не открыто».

Вот как я понимаю ваш вопрос и соответствующий ответ.

android:enabled

Может ли приемник вещания быть создан системой - «истина», если это возможно, и «ложь», если нет. Значением по умолчанию является «true».

Если вы хотите включить приемник во время выполнения, вы можете сначала установить состояние отключенным. Вы можете сделать это в файле манифеста:

<receiver
android:name=".YourReceiver"
android:enabled="false" >
<!-- your intent filter -->
</receiver>

Источник : http://developer.android.com/guide/topics/manifest/receiver-element.html#enabled

http://www.grokkingandroid.com/enabling-and-disabling-broadcastreceivers/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...