Android 在任何屏幕上通知用户未连接到internet?
我正在开发一个应用程序,在应用程序中的任何一点(在任何片段中-如果我错了请纠正我),如果用户未连接到internet,一个弹出窗口(我想我必须使用toast)要求用户Android 在任何屏幕上通知用户未连接到internet?,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我正在开发一个应用程序,在应用程序中的任何一点(在任何片段中-如果我错了请纠正我),如果用户未连接到internet,一个弹出窗口(我想我必须使用toast)要求用户 打开wi-fi(如果wi-fi已关闭且没有数据连接),或 连接到wi-fi(如果wi-fi已打开但未连接),或 打开手机中的数据 如何在应用程序中的任意点显示弹出窗口 我应该让用户进入设置并打开wifi或采取相应的措施,还是停止显示消息 此应用程序确实需要internet连接。谢谢。首先,您必须检查您的设备是否已连接到inte
- 打开wi-fi(如果wi-fi已关闭且没有数据连接),或
- 连接到wi-fi(如果wi-fi已打开但未连接),或
- 打开手机中的数据
此应用程序确实需要internet连接。谢谢。首先,您必须检查您的设备是否已连接到internet。下面的代码将帮助您检查这一点 检查互联网可用性的方法:
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
public static AlertDialog displayMobileDataSettingsDialog(final Activity activity, final Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("No Internet");
builder.setMessage("Please connect to your internet");
builder.setPositiveButton("Wifi", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
context.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
dialog.cancel();
}
});
builder.setNegativeButton("Mobile Data", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$DataUsageSummaryActivity"));
dialog.cancel();
startActivity(intent);
activity.finish();
}
});
builder.show();
return builder.create();
}
如果上述布尔值为真,则您可以继续操作,或者您必须指示用户转到设置并打开移动数据或Wi-Fi连接。请参考以下代码以指导用户。如果上述布尔值返回false,则调用以下方法
displayMobileDataSettingsDialog(your current activity,context);
显示警报的方法:
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
public static AlertDialog displayMobileDataSettingsDialog(final Activity activity, final Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("No Internet");
builder.setMessage("Please connect to your internet");
builder.setPositiveButton("Wifi", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
context.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
dialog.cancel();
}
});
builder.setNegativeButton("Mobile Data", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$DataUsageSummaryActivity"));
dialog.cancel();
startActivity(intent);
activity.finish();
}
});
builder.show();
return builder.create();
}
可选:
有时,您的设备可能已连接到internet,但不会收到任何数据,在这种情况下,您可以使用以下方法检查设备是否确实收到了数据
public boolean isInternetAvailable() {
try {
InetAddress ipAddr = InetAddress.getByName("google.com"); //You can replace it with your name
return !ipAddr.equals("");
} catch (Exception e) {
return false;
}
}
希望它能帮助您。您应该使用AlertDialog。有按钮的。干杯不算什么。看这里。当您尝试访问服务器时,即在您从服务器发送/接收数据的代码中,您必须检查internet可用性并向用户显示警报。非常感谢您提供详细的解释和代码。请问这个代码应该放在哪里。如果我把它放在一个新类中,那么该类应该放在一个包的哪个位置?2)如果AlertDialog的文本应该是另一种语言呢?我可以在strings.xml中使用字符串并在此处使用它们吗?“2)如果AlertDialog的文本应该是另一种语言怎么办?我可以在strings.xml中使用字符串并在此处使用它们吗?”-是的,您可以将此代码放在您的类下,您可以将数据更新到服务器。。。最好把你的代码放在你认为应该放在的地方,我会让你知道的。谢谢回复。好的,换句话说,在我的应用程序中,假设有10个屏幕,每个屏幕上都有一个与远程服务器或web服务的事务。所以我需要检查每个屏幕上的互联网连接,如果没有,我应该让用户知道。我没有将冗余代码放在10个不同的地方,而是尝试将其放在一个类中,并在10个不同的地方调用这些方法。你能告诉我怎么做吗?因为它有getSystemService(Context.CONNECTIVITY\u服务);和其他活动或上下文相关的成员,我感到震惊。请帮忙。