【问题标题】:Show dialog when you have no internet connection没有互联网连接时显示对话框
【发布时间】:2018-04-23 03:04:31
【问题描述】:

我怎样才能做到这一点,当应用程序打开,并且没有互联网连接时,会出现一个对话框,通知连接,并带有一个按钮“确定”,当被炸毁时关闭应用程序

【问题讨论】:

标签: android dialog


【解决方案1】:

在实用程序类中使用实用程序方法

实用类:

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" />

【讨论】:

    【解决方案2】:

    您可以使用以下代码检查网络是否可用。更多详情,您可以参考documentation

    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
    

    【讨论】:

      【解决方案3】:

      将此权限添加到您的清单中:

      <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。

      【讨论】:

        【解决方案4】:

        首先,在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方法中调用这个

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-07
          • 1970-01-01
          • 2019-12-31
          • 1970-01-01
          • 2019-12-17
          • 2013-07-26
          相关资源
          最近更新 更多