2013-05-07 1 views
0

У меня есть зарегистрированный уровень широковещательного приемника уровня (android.net.wifi.WIFI_STATE_CHANGED), он отлично работает для мониторинга сигнала Wi-Fi, но я хочу получить класс Lassen Receive только в том случае, когда приложение активен, или приложение не находится в фоновом режиме или приостанавливает состояние. В настоящее время, когда я оставляю свое приложение и просматриваю любое другое приложение .if, я меняю сигнал Wi-Fi (закрываем или открываем), тогда мой приемник генерирует событие. i хочу генерировать событие только тогда, когда мое приложение активен, я не хочу получать уведомления в любом другом приложенииизбегать приема широковещательного ресивера, когда приложение приостановлено или находится в фоновом режиме

<receiver android:name="com.android.mobileTimerClock.WifiReceiver" > 
       <intent-filter> 

      <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> 
    </intent-filter> 
      </receiver> 

ответ

1

Вы должны зарегистрировать свой BroadcastReceiver progamatically по методу и разрегистрировать его на Activity.onPause меня ThOD.

Example

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    // Create the receiver 
    receiver = new TimelineReceiver(); 
    filter = new IntentFilter(UpdaterService.NEW_STATUS_INTENT); 
} 

protected void onResume() { 
    super.onResume(); 
    super.registerReceiver(receiver, filter, 
      "com.marakana.yamba.SEND_TIMELINE_NOTIFICATIONS", null); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(receiver); 
} 
+0

но проблема в том, что у меня много активности, я не могу справиться с этим на уровне активности. Должен быть уровень устройства – 2013-05-07 16:50:39

+0

Создайте BaseActivity, который расширяет Activity и реализует это поведение. После этого, все ваши действия расширяют BaseActivity вместо Activity. –

+0

спасибо, в базе Деятельность, я собираюсь переопределить паузу и на resume.but приложение собирается к исключению – 2013-05-07 21:01:09

0

Manifest приемники предназначены для обработки широковещательных событий, даже если базовая активность не является активным. Фактически, вы можете иметь явный вещательный приемник сам по себе (без какой-либо активности). Вы не можете использовать манифест-приемник, если вы не хотите, чтобы ваш onReceive() вызывался на основе состояния конкретного Activity.

Однако у вас все еще есть возможность выбрать способ, которым вы хотите обработать событие. Вы можете проверить, активны ли ваши действия (или действия) до обработки события (с помощью ActivityManager).

Смежные вопросы