Androidでのインターネット接続の確認方法(Kotlin)


  1. ConnectivityManagerを使用する方法: Androidでは、ConnectivityManagerクラスを使用してインターネット接続の状態を確認できます。以下のコードを使用すると、インターネット接続が利用可能かどうかを確認できます。
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
fun isInternetAvailable(context: Context): Boolean {
    val connectivityManager =
        context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val networkCapabilities =
        connectivityManager.activeNetwork ?: return false
    val activeNetwork =
        connectivityManager.getNetworkCapabilities(networkCapabilities) ?: return false
    return activeNetwork.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
}

上記のコードでは、isInternetAvailable関数を使用して、引数としてContextオブジェクトを受け取り、インターネット接続の可否を返します。返り値がtrueの場合、インターネット接続が利用可能です。

  1. BroadcastReceiverを使用する方法: Androidでは、BroadcastReceiverを使用してネットワークの状態変化を監視することもできます。以下のコードを使用すると、ネットワークの接続状態が変化した場合に通知を受け取ることができます。

まず、AndroidManifest.xmlファイルに以下のパーミッションとレシーバを追加します。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver
    android:name=".NetworkChangeReceiver"
    android:label="NetworkChangeReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

次に、以下のようにBroadcastReceiverを実装します。

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
import android.widget.Toast
class NetworkChangeReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val connectivityManager =
            context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo
        if (networkInfo != null && networkInfo.isConnected) {
            Toast.makeText(context, "インターネット接続があります", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(context, "インターネット接続がありません", Toast.LENGTH_SHORT).show()
        }
    }
}

上記のコードでは、NetworkChangeReceiverクラスを作成し、onReceiveメソッド内でネットワークの状態変化に応じて適切な処理を行います。この場合、ネットワーク接続の有無に応じてトーストメッセージを表示します。

以上が、Androidアプリでインターネット接続を確認する方法の例です。これらの方法を使用して、Androidアプリにインターネット接続の確認機能を追加することができます。