2016-08-22 1 views
14

私はサンドボックスアンドロイドN・アプリケーションで受信機を定義していますAndroid Nはandroid.net.conn.CONNECTIVITY_CHANGEをブロードキャストしていませんか?

<receiver 
    android:exported="true" 
    android:name="com.sandboxapplication.NetworkReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

それはかなり簡単です:

public class NetworkReceiver extends BroadcastReceiver { 
    private static final String TAG = NetworkReceiver.class.getName(); 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "Received Network Change event."); 
    } 
} 

私のbuild.gradleに私のtargetSdkVersionを提出する場合、この受信機は正常に動作している。しかし23です。 targetSdkVersionを24に設定すると、受信者は何も受信しません。実際、受信機にデバッグブレークポイントを置くと、Android Studioは私に、クラスが決してメモリにロードされないように見えることを視覚的に示します。

Android Nのドキュメントで非常に基本的なことを忘れましたか?接続変更イベントを検出する新しい方法はありますか?

答えて

20

AndroidをターゲットとするアプリN (Nougat)は、これらのイベントの通知を要求するマニフェストエントリを持っていても、CONNECTIVITY_ACTIONブロードキャストを受信しません。 BroadcastReceiverで通知を要求すると、実行中のアプリケーションはメインスレッドでCONNECTIVITY_CHANGEを聞くことができます。

Android N (Nougat)の変更点を確認してください。下記リンクをご参照ください。 Android N Behaviour Changes

+0

ありがとう、私はドキュメンテーションで非常に基本的なものを見逃しているに違いないと知っていました... – DanMD

+4

@DanMDおそらくhttps://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTIONこれについて言及するためにわずかな努力をしていない...時間の無駄。 –

+3

作業リンク:https://developer.android.com/about/versions/nougat/android-7.0-changes.html – rmtheis

15

使用このコードは、あなたの活動やApplicationクラスに受信機を登録するNetworkConnectionReceiverはBroadcastReceiverによって拡張するクラスです

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTI‌​ON); 
registerReceiver(new NetworkConnectionReceiver(), intentFilter); 

。あなたのアプリにこのクラスを追加し、onReceive(コンテキストコンテキスト、意図インテント)メソッドでアクションを実行するだけです。

注:このレシーバをアクティビティに登録する場合は、登録を忘れないでください。

+0

私はこのコードを置く必要がありますか? –

+0

Nougatでは、アプリが強制終了されたときにBroadcastReceiverがトリガーされますか? – Priya

+0

@Priyaいいえ、アプリが強制終了されると、プロセスは終了し、コードに登録されたすべての情報もなくなります。とにかくアプリがフォアグラウンドにあるときだけ、このブロードキャストを聞くべきです。 – BladeCoder

関連する問題