2016-12-09 1 views
0

У меня изменение состояния сети Broadcast Receiver настройка для моего приложения. Мне нужно получать Wi-Fi-соединения, даже если телефон находится в спящем режиме. Это работает, когда телефон заряжается и во сне, но не делает его не во сне.Изменение связи Трансляция приемника не запускается, когда телефон находится в спящем режиме

здесь код

public class NetworkConnectionReceiver extends WakefulBroadcastReceiver { 
public static final String INTENT_CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equalsIgnoreCase(INTENT_CONNECTIVITY_CHANGE)) { 
     NetworkChangedEvent event = new NetworkChangedEvent(); 
     NetworkInfo activeNetworkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 
     boolean wifiConnected = activeNetworkInfo != null 
       && activeNetworkInfo.isConnected() 
       && activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI; 

     if (wifiConnected) { 
      // start a service here 
     } 
    } 
} 
} 

вот как его зарегистрированный в очевидном

<receiver 
     android:name=".NetworkConnectionReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
      <action android:name="android.net.wifi.STATE_CHANGE" /> 
     </intent-filter> 
    </receiver> 

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

ответ

1

Используйте WakefulBroadcastReceiver:

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

Этот класс позаботится о создании и управлении частичной блокировкой следа для вас; вы должны запросить разрешение WAKE_LOCK для его использования.

+0

пытается это прямо сейчас, но я не уверен, поскольку я считаю, что трансляция сама по себе не запускается на первом месте. –

+0

проверено, все еще не работает. –

+0

Обновление: оно работает на одном устройстве, а не на другом. Принятие ответа на данный момент. –

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