繁体   English   中英

在android中启动应用程序时检查互联网连接

[英]Check internet connection on application launch in android

这里找到了一个检查互联网连接的代码

但我不知道如何实现或调用这个类或方法,因为我仍在使用 android studio 学习 android 编程。

请查看下面我的代码,并请让我知道如何安排它,使其在应用程序启动时触发,并包括说明它已连接或未连接的吐司消息。

package com.example.enan.checkinternetconnection;


public class MainActivity extends AppCompatActivity {

private static final String TAG = "";
private static final String LOG_TAG = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

public boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500);
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(LOG_TAG, "No network available!");
    }
    return false;
}

public boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager
            = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}
}

首先,在尝试确定是否有可用的互联网连接时,调用网页并等待其响应不是一个好的选择。

有 android 内置的辅助方法来检查连接,例如:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

此外,如果您想要在应用程序启动时检查连接性,最好的选择是创建一个从android.app.Application扩展的新类并覆盖onCreate方法,如下所示:

public class YourApplication extends android.app.Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (isNetworkAvailable()) {
            //Connected to the Internet
        } else {
            //Not connected
        }
    }
}

完整代码如下所示:

public class YourApplication extends android.app.Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (isNetworkAvailable()) {
            //Connected to the Internet
        } else {
            //Not connected
        }
    }

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

最后,在您的 AndroidManifest.xml 上将名称设置为 android:name=".YourApplication"

<application
    android:name=".YourApplication"
    ... >

</application>

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

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

然后在您的主要活动中初始化连接管理器:

 private boolean connected(){
  ConnectivityManager connectivityManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
  return activeNetworkInfo !=null && activeNetworkInfo.isConnected();
}

并在您的 onCreate(Main Activities oncreate) 检查用户是否已连接。对于 UI 消息,您始终可以添加自己的自定义小吃栏或对话框。

if(connected()){
        Log.i("TRUE","User is connected");
    }else{
        Log.i("TRUE","User is not connected");
    }

调用hasActiveInternetConnection(getApplicationContext()); onCreate方法中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM