2021 Dec. 28.
引用元 【Android/Kotlin】インターネット接続の確認とNetworkInfo非推奨の解消 - Qiita
ACCESS_NETWORK_STATE権限を許可する
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="MY.PROJECT"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MyIsNetworkValid"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
kotlinコード
MainActivity.kt
import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import MY.PROJECT.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_main) val binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.buttonShowNetStatus.setOnClickListener { // Grateful for https://qiita.com/taowata/items/4609dcddc3ddb4840fd6 // ConnectivityManagerの取得 val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager // NetworkCapabilitiesの取得 // 引数にcm.activeNetworkを指定し、現在アクティブなデフォルトネットワークに対応するNetworkオブジェクトを渡している val capabilities = cm.getNetworkCapabilities(cm.activeNetwork) if (capabilities != null) { binding.TextViewNetStatus.text = when { capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> "Wifiに接続しています" capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> "モバイル通信に接続しています" else -> "その他のネットワークに接続しています" } } else { binding.TextViewNetStatus.text = "インターネットに接続していません" } } } }