如何在没有 Internet 连接对话框的 Android 中检查 Internet 连接?
你好极客,今天我们将学习如何将 Internet Alert 的功能添加到我们的应用程序中。您肯定在几乎所有应用程序中都看到,当数据关闭或应用程序无法访问 Internet 时,它会弹出“无 Internet 连接”消息,然后再次连接到数据时显示消息“返回在线”或“Internet in connected”,我们将在我们的应用程序中实现相同的功能。
Internet Alert的目标/目的:
- 通知用户他/她没有连接到网络。
- 停止应用程序中所有与互联网相关的活动或服务。
我们将在本文中构建什么?
在这里,我们将创建一个按钮。每当用户按下按钮时,就会显示 Internet 连接消息。请注意,我们将使用Java语言实现此应用程序。下面给出了一个示例视频,以了解我们将在本文中做什么。
分步实施
第 1 步:创建一个新项目
- 打开一个新项目。
- 我们将使用Java语言处理 Empty Activity。保持所有其他选项不变。
- 您可以在方便时更改项目的名称。
- 将有两个名为activity_main.xml 和 MainActivity 的默认文件。Java。
如果您不知道如何在 Android Studio 中创建新项目,那么您可以参考如何在 Android Studio 中创建/启动新项目?
第 2 步:导航到 app > manifests > AndroidManifest.xml 文件并粘贴以下代码以添加 Internet 权限
第 3 步:使用 activity_main.xml 文件
我们使用activity_main.xml文件中的按钮来执行操作。在activity_main.xml文件中使用以下代码。
XML
Java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionReceiver extends BroadcastReceiver {
// initialize listener
public static ReceiverListener Listener;
@Override
public void onReceive(Context context, Intent intent) {
// initialize connectivity manager
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
// Initialize network info
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// check condition
if (Listener != null) {
// when connectivity receiver
// listener not null
// get connection status
boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
// call listener method
Listener.onNetworkChange(isConnected);
}
}
public interface ReceiverListener {
// create method
void onNetworkChange(boolean isConnected);
}
}
Java
import android.content.Context;
import android.content.IntentFilter;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity implements ConnectionReceiver.ReceiverListener {
Button btn_check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// assign variable
btn_check = findViewById(R.id.btn_check);
// create method
checkConnection();
btn_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// call method
checkConnection();
}
});
}
private void checkConnection() {
// initialize intent filter
IntentFilter intentFilter = new IntentFilter();
// add action
intentFilter.addAction("android.new.conn.CONNECTIVITY_CHANGE");
// register receiver
registerReceiver(new ConnectionReceiver(), intentFilter);
// Initialize listener
ConnectionReceiver.Listener = this;
// Initialize connectivity manager
ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
// Initialize network info
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
// get connection status
boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
// display snack bar
showSnackBar(isConnected);
}
private void showSnackBar(boolean isConnected) {
// initialize color and message
String message;
int color;
// check condition
if (isConnected) {
// when internet is connected
// set message
message = "Connected to Internet";
// set text color
color = Color.WHITE;
} else {
// when internet
// is disconnected
// set message
message = "Not Connected to Internet";
// set text color
color = Color.RED;
}
// initialize snack bar
Snackbar snackbar = Snackbar.make(findViewById(R.id.btn_check), message, Snackbar.LENGTH_LONG);
// initialize view
View view = snackbar.getView();
// Assign variable
TextView textView = view.findViewById(R.id.snackbar_text);
// set text color
textView.setTextColor(color);
// show snack bar
snackbar.show();
}
@Override
public void onNetworkChange(boolean isConnected) {
// display snack bar
showSnackBar(isConnected);
}
@Override
protected void onResume() {
super.onResume();
// call method
checkConnection();
}
@Override
protected void onPause() {
super.onPause();
// call method
checkConnection();
}
}
执行上述代码后,activity_main.xml 文件的设计将如下所示。
第 4 步:使用Java文件
使用以下方法创建一个名为ConnectionReceiver的新Java类
在ConnectionReceiver 中使用以下代码。 Java文件。
Java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionReceiver extends BroadcastReceiver {
// initialize listener
public static ReceiverListener Listener;
@Override
public void onReceive(Context context, Intent intent) {
// initialize connectivity manager
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
// Initialize network info
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// check condition
if (Listener != null) {
// when connectivity receiver
// listener not null
// get connection status
boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
// call listener method
Listener.onNetworkChange(isConnected);
}
}
public interface ReceiverListener {
// create method
void onNetworkChange(boolean isConnected);
}
}
转到主活动。 Java文件,参考如下代码。下面是MainActivity的代码。 Java文件。代码中添加了注释以更详细地理解代码。
Java
import android.content.Context;
import android.content.IntentFilter;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity implements ConnectionReceiver.ReceiverListener {
Button btn_check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// assign variable
btn_check = findViewById(R.id.btn_check);
// create method
checkConnection();
btn_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// call method
checkConnection();
}
});
}
private void checkConnection() {
// initialize intent filter
IntentFilter intentFilter = new IntentFilter();
// add action
intentFilter.addAction("android.new.conn.CONNECTIVITY_CHANGE");
// register receiver
registerReceiver(new ConnectionReceiver(), intentFilter);
// Initialize listener
ConnectionReceiver.Listener = this;
// Initialize connectivity manager
ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
// Initialize network info
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
// get connection status
boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
// display snack bar
showSnackBar(isConnected);
}
private void showSnackBar(boolean isConnected) {
// initialize color and message
String message;
int color;
// check condition
if (isConnected) {
// when internet is connected
// set message
message = "Connected to Internet";
// set text color
color = Color.WHITE;
} else {
// when internet
// is disconnected
// set message
message = "Not Connected to Internet";
// set text color
color = Color.RED;
}
// initialize snack bar
Snackbar snackbar = Snackbar.make(findViewById(R.id.btn_check), message, Snackbar.LENGTH_LONG);
// initialize view
View view = snackbar.getView();
// Assign variable
TextView textView = view.findViewById(R.id.snackbar_text);
// set text color
textView.setTextColor(color);
// show snack bar
snackbar.show();
}
@Override
public void onNetworkChange(boolean isConnected) {
// display snack bar
showSnackBar(isConnected);
}
@Override
protected void onResume() {
super.onResume();
// call method
checkConnection();
}
@Override
protected void onPause() {
super.onPause();
// call method
checkConnection();
}
}
恭喜!我们已经成功地使应用程序检查 Internet 连接并向用户发出警报。这是我们应用程序的最终输出。
输出: