一、设置广播接收者
package com.example.mydemo
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
import android.net.NetworkInfo
import android.widget.Toast
/**
* 继承抽象类实现onReceive方法
* */
class TestBroadcastReceiver:BroadcastReceiver() {
@SuppressLint("MissingPermission")
override fun onReceive(context: Context?, intent: Intent?) {
val action = intent?.action?:return
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)){
val connectivityManager:ConnectivityManager = context?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val info: NetworkInfo? = connectivityManager.activeNetworkInfo
if (info !=null && info.isAvailable){
// 有网络连接
val typeName = info.typeName
Toast.makeText(context!!,"当前网络连接类型${typeName}",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(context!!,"当前无网络连接",Toast.LENGTH_LONG).show()
}
}
}
}
二、注册广播
package com.example.mydemo
import android.content.IntentFilter
import android.net.ConnectivityManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
private lateinit var receiver: TestBroadcastReceiver
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
receiver = TestBroadcastReceiver()
// 创建广播过滤器,指定只接收android.net.conn.CONNECTIVITY_CHANGE广播事件
val intentFilter = IntentFilter()
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION)
registerReceiver(receiver,intentFilter)
}
override fun onDestroy() {
super.onDestroy()
// 注销通知-必须在onDestroy时反注册,否则会造成内存泄漏
unregisterReceiver(receiver)
}
}
三、添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />