ホームページ >Java >&#&チュートリアル >ブロードキャスト レシーバーを使用して Android アプリでのインターネット接続の変化を確実に検出するにはどうすればよいですか?

ブロードキャスト レシーバーを使用して Android アプリでのインターネット接続の変化を確実に検出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 10:41:09268ブラウズ

How Can I Reliably Detect Internet Connectivity Changes in My Android App Using Broadcast Receivers?

Android アプリでインターネット接続を確認するためのブロードキャスト レシーバー

Android アプリケーションでは、システムの変更や特定のイベントを監視するためにブロードキャスト レシーバーが使用されます。このような一般的な使用例の 1 つは、インターネット接続の確認です。ただし、特定のシナリオでは、受信者の呼び出しをネットワーク接続が利用可能なインスタンスに制限することが望ましい場合があります。

問題: 重複したブロードキャスト レシーバーの呼び出し

一般的な課題は、受信者がネットワークが利用できない場合でも、2 回呼び出されます。これは、受信者のマニフェスト宣言に複数のインテント フィルターが追加されていることが原因である可能性があります。この問題を解決するには、ネットワーク接続の変更に対して次のようなアクションを 1 つだけ使用するだけで十分です。

<intent-filter>
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>

インターネットの可用性の確認

2 番目の問題に対処するには、受信者はどこで行う必要がありますか?ネットワーク接続が利用可能な場合にのみトリガーされるため、提供されたコードはこの要件を効果的に満たします。 WiFi とモバイル ネットワークの両方の可用性を監視し、どちらかが接続されている場合にのみ通知します。

追加メモ

インターネット接続を確認するためのより簡単な方法については、次の関数を検討してください:

public boolean isOnline(Context context) {

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    //should check for null as it will be null in airplane mode
    return (netInfo != null && netInfo.isConnected());
}

このメソッドは、モバイル デバイスがネットワークに接続されているかどうかを判断する簡潔な方法を提供します。

以上がブロードキャスト レシーバーを使用して Android アプリでのインターネット接続の変化を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。