【发布时间】:2018-04-23 03:04:31
【问题描述】:
我怎样才能做到这一点,当应用程序打开,并且没有互联网连接时,会出现一个对话框,通知连接,并带有一个按钮“确定”,当被炸毁时关闭应用程序
【问题讨论】:
我怎样才能做到这一点,当应用程序打开,并且没有互联网连接时,会出现一个对话框,通知连接,并带有一个按钮“确定”,当被炸毁时关闭应用程序
【问题讨论】:
在实用程序类中使用实用程序方法
实用类:
public static boolean hasNetwork (){
return instance.checkIfHasNetwork();
}
public boolean checkIfHasNetwork(){
ConnectivityManager cm = (ConnectivityManager) getSystemService( Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
}
用法:
if (!Utility.hasNetwork()){
// show dialog
}
在Manifest中也添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【讨论】:
您可以使用以下代码检查网络是否可用。更多详情,您可以参考documentation。
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
【讨论】:
将此权限添加到您的清单中:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
添加到您的活动中
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager //get ConnectiviyManager
val networkInfo = cm.activeNetworkInfo //get network info
if(!networkInfo.isConnected){ //check if network is connected
val builder = AlertDialog.Builder(this) //create dialog builder
builder.setMessage("Dialog message") //set dialog message
.setTitle("Dialog title"); //set dialog title
builder.setNeutralButton(R.string.ok, DialogInterface.OnClickListener { dialog, id ->
dialog.dismiss() //add Ok button, when clicked close the dialog
})
builder.create().show()//show dialog
}
这是 Kotlin。
【讨论】:
首先,在android manifest文件中声明访问网络状态的权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
接下来,使用 getSystemService 获取 android Connectivity manager。
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
如果您只检查活动网络连接,请使用 isConnected。
创建一个单独的方法,在setContentView之后在onCreate方法中调用这个
【讨论】: