[英]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.