2016-12-09 8 views
0

私のアプリケーションのネットワーク状態がBroadcast Receiverに変更されました。電話がスリープモードになっていても、wifi接続切断イベントを受信する必要があります。これは、電話機が充電中および睡眠中のときに機能しますが、スリープ状態にないときは機能しません。ここ接続変更電話がスリープモードになっているときにブロードキャストレシーバーが起動しない

ここにコード

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> 

に登録する方法です電話機がスリープ状態にあり、充電器に接続されていないときのデバイス。

答えて

1

使用WakefulBroadcastReceiver:デバイスがスリープ状態に戻っていないことを保証しながら、デバイスのウェイクアップイベントを受け取り、BroadcastReceiverを実装するための一般的なパターンのための

ヘルパーは、サービスを切っ仕事を渡します移行中に

このクラスは、あなたのための部分的なウェイクロックの作成と管理を行います。 WAKE_LOCKの使用許可を要求する必要があります。

+0

これを今にしようとしていますが、私自身はブロードキャスト自体が最初に起動していないとは思っていません。 –

+0

がチェックされても、動作しません。 –

+0

アップデート:あるデバイスで動作し、別のデバイスでは動作しません。今のところ受け入れる –

関連する問題