Kotlin 中没有 Internet 警告框
No Internet Alert box in Kotlin
我刚开始学习 Kotlin,我目前正在开发基于 WebView 的应用程序,如果应用程序打开后互联网不可用,我需要显示一个警告框。我如何在 Kotlin 中做到这一点?
注意:我已经检查了许多 Stack Overflow 问题,但所有答案都是针对 java 而不是 Kotlin。
另外,我只是一个初学者,所以请用简单的方式写下答案,以便我理解。抱歉英语不好
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
open class ConnectionCheck:BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (connectivityReceiverListener != null) {
connectivityReceiverListener!!.onNetworkConnectionChanged(
isConnectedOrConnecting(
context!!
)
)
}
}
private fun isConnectedOrConnecting(context: Context): Boolean {
val connMgr = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connMgr.activeNetworkInfo
return networkInfo != null && networkInfo.isConnectedOrConnecting
}
interface ConnectivityReceiverListener {
fun onNetworkConnectionChanged(isConnected: Boolean)
}
companion object {
var connectivityReceiverListener: ConnectivityReceiverListener? = null
}
}
这是互联网连接 activity。在您要检查互联网连接的每个 activity 中,activity 应该扩展 ConnectionCheck.ConnectivityReceiverListener
.
别忘了放
<uses-permission android:name="android.permission.INTERNET"/>
清单中。
private fun checkConnectivity() {
val manager = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = manager.activeNetworkInfo
if (null == activeNetwork) {
val dialogBuilder = AlertDialog.Builder(this)
val intent = Intent(this, MainActivity::class.java)
// set message of alert dialog
dialogBuilder.setMessage("Make sure that WI-FI or mobile data is turned on, then try again")
// if the dialog is cancelable
.setCancelable(false)
// positive button text and action
.setPositiveButton("Retry", DialogInterface.OnClickListener { dialog, id ->
recreate()
})
// negative button text and action
.setNegativeButton("Cancel", DialogInterface.OnClickListener { dialog, id ->
finish()
})
// create dialog box
val alert = dialogBuilder.create()
// set title for alert dialog box
alert.setTitle("No Internet Connection")
alert.setIcon(R.mipmap.ic_launcher)
// show alert dialog
alert.show()
}
}
同时将此权限添加到 Manifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
如果您的应用程序中没有互联网连接,这应该足以显示一个对话框。
我刚开始学习 Kotlin,我目前正在开发基于 WebView 的应用程序,如果应用程序打开后互联网不可用,我需要显示一个警告框。我如何在 Kotlin 中做到这一点?
注意:我已经检查了许多 Stack Overflow 问题,但所有答案都是针对 java 而不是 Kotlin。 另外,我只是一个初学者,所以请用简单的方式写下答案,以便我理解。抱歉英语不好
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
open class ConnectionCheck:BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (connectivityReceiverListener != null) {
connectivityReceiverListener!!.onNetworkConnectionChanged(
isConnectedOrConnecting(
context!!
)
)
}
}
private fun isConnectedOrConnecting(context: Context): Boolean {
val connMgr = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connMgr.activeNetworkInfo
return networkInfo != null && networkInfo.isConnectedOrConnecting
}
interface ConnectivityReceiverListener {
fun onNetworkConnectionChanged(isConnected: Boolean)
}
companion object {
var connectivityReceiverListener: ConnectivityReceiverListener? = null
}
}
这是互联网连接 activity。在您要检查互联网连接的每个 activity 中,activity 应该扩展 ConnectionCheck.ConnectivityReceiverListener
.
别忘了放
<uses-permission android:name="android.permission.INTERNET"/>
清单中。
private fun checkConnectivity() {
val manager = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = manager.activeNetworkInfo
if (null == activeNetwork) {
val dialogBuilder = AlertDialog.Builder(this)
val intent = Intent(this, MainActivity::class.java)
// set message of alert dialog
dialogBuilder.setMessage("Make sure that WI-FI or mobile data is turned on, then try again")
// if the dialog is cancelable
.setCancelable(false)
// positive button text and action
.setPositiveButton("Retry", DialogInterface.OnClickListener { dialog, id ->
recreate()
})
// negative button text and action
.setNegativeButton("Cancel", DialogInterface.OnClickListener { dialog, id ->
finish()
})
// create dialog box
val alert = dialogBuilder.create()
// set title for alert dialog box
alert.setTitle("No Internet Connection")
alert.setIcon(R.mipmap.ic_launcher)
// show alert dialog
alert.show()
}
}
同时将此权限添加到 Manifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
如果您的应用程序中没有互联网连接,这应该足以显示一个对话框。