【问题标题】:Method to check if Wifi is Connected with in class在课堂上检查 Wifi 是否已连接的方法
【发布时间】:2016-06-15 20:06:42
【问题描述】:

我想在单击按钮时检查 wifi 是否连接以及显示弹出消息,所以我为它编写了一个单独的类:

公共类 Pop 扩展 Activity {

@Override

protected void onCreate(Bundle savedInstanceSate) {

    super.onCreate(savedInstanceSate);

    setContentView(R.layout.popup);

    DisplayMetrics dm = new DisplayMetrics() ;
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels ;
    int height = dm.heightPixels ;

    getWindow().setLayout( (int)(width*.6),(int)(height*.4) ) ;

}

那么检查wifi是否连接的方法应该是什么,即使应用程序关闭,它也会每5秒后继续检查一次?

【问题讨论】:

    标签: java android methods android-wifi wifimanager


    【解决方案1】:

    试试这个

    添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    在您的MainActivity.java

    ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    
    if (mWifi.isConnected()) {
            Intent networkInfoServiceIntent = new Intent(MainActivity.this,NetworkInfoService.class);
            startService(networkInfoServiceIntent);
    }
    

    创建服务名称为NetworkInfoService 并在清单中注册

    现在将NetworkInfoService 实现为,

        /**
         * Function for check network connectivity after every 5 seconds
         */
        private void checkNetworkConnectivity() {
            // handler will run after 5 seconds
            new Handler().postDelayed(new Runnable() {
                                          @Override
                                          public void run() {
                                             ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                                             NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                                              if (mWifi.isConnected()){
                                                  checkNetworkConnectivity();
                                              }else {
                                                  // display alert (notification)
                                              }
    
                                          }
                                      },5000
            );
        }
    

    【讨论】:

      【解决方案2】:

      您可以通过调用此方法检查您是否可以访问互联网:

      private boolean isNetworkAvailable() {
          ConnectivityManager connectivityManager =
                  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
      
          boolean isAvailable = false;
          if (networkInfo != null && networkInfo.isConnected()) {
              isAvailable = true;
          }
          return isAvailable;
      }
      

      记得同时请求所需的权限:

      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 2019-01-03
        • 2019-10-15
        • 1970-01-01
        • 2013-05-10
        相关资源
        最近更新 更多