我也在搜索这个问题的答案然后我在我的代码中这样做并且它有效。不知道,好不好。如果有什么问题,请告诉我。
步骤: 1
创建一个BaseActivity 类并扩展AppCompatActivity 类并在其中编写代码以进行网络检查,如果没有网络连接,则向用户显示消息:
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkRequest
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
open class BaseActivity : AppCompatActivity() {
private var cManager: ConnectivityManager? = null
private var mCallback: ConnectivityManager.NetworkCallback? = null
private var request : NetworkRequest? = null
private var view: View? = null
private var mSnackBar: Snackbar? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
cManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
request = NetworkRequest.Builder().build()
// get root view where we want to show message
view = window.decorView.rootView
mCallback = object : ConnectivityManager.NetworkCallback() {
override fun onLost(network: Network) {
super.onLost(network)
mSnackBar = Snackbar.make(view!!, "No Network connection", Snackbar.LENGTH_LONG)
mSnackBar!!.duration = Snackbar.LENGTH_INDEFINITE
mSnackBar!!.show()
}
override fun onAvailable(network: Network) {
super.onAvailable(network)
if (mSnackBar != null){
mSnackBar!!.dismiss()
}
}
}
cManager!!.registerNetworkCallback(request!!, mCallback!!)
}
override fun onStop() {
super.onStop()
cManager!!.unregisterNetworkCallback(mCallback!!)
}
}
第2步:
现在在MainActivity类中,扩展了这个BaseActivity类。
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
第 3 步:
不要忘记将其添加到AndroidManifest文件中
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
现在运行并检查您的应用程序。:)