按下 SEND 按钮时网络不可用时如何显示快餐栏
How to show snackbar when network unavailable on SEND button press
任何人都可以帮助我如何在按下按钮时无法使用 WiFi 或移动数据时显示小吃栏。实际上,当用户想要从我的 Android 应用程序发送反馈表时,此按钮用于发送电子邮件。
我的要求是:
当用户按下按钮时如果有可用的网络,则应直接发送电子邮件而不显示 Snackbar,并且当任何网络不可用时应显示 snackbar。过去几天我一直在努力解决我的问题,但没有运气。我的 snackbar 编码一直有效,就像它每次在 API 23 级以下且不高于 API 级别且不高于此按钮时显示有和无网络时一样。
注意:如果不提供 Snackbar 编码,我的代码可以完美运行。所以我不需要电子邮件意图编码,我只需要使用 Snackbar 进行网络状态编码。
如果有人提供正确的解决方案,那将对我有很大帮助。提前谢谢你。
使用以下函数检查互联网是否可用
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
如果 returns 为真,请继续发送电子邮件。否则显示小吃店。
您需要将以下权限添加到清单中
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ConnectionDetect.class
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionDetect
{
private Context context;
public static boolean chechkagain;
public ConnectionDetect(Context context) {
this.context = context;
}
public boolean isConnectingToInternet() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = cm
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo datac = cm
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if ((wifi != null & datac != null)
&& (wifi.isConnected() | datac.isConnected())) {
chechkagain = true;
synchronized (context) {
context.notify();
}
} else {
chechkagain = false;
}
return chechkagain;
}
}
现在检查互联网是否可用
if (connectionDetect.isConnectingToInternet()) {
//Send Email
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout,
"Please check internet",
Snackbar.LENGTH_LONG);
snackbar.show();
}
coordinatorLayout 是 CoordinatorLayout 的 id,我们要在其中显示小吃店
任何人都可以帮助我如何在按下按钮时无法使用 WiFi 或移动数据时显示小吃栏。实际上,当用户想要从我的 Android 应用程序发送反馈表时,此按钮用于发送电子邮件。
我的要求是: 当用户按下按钮时如果有可用的网络,则应直接发送电子邮件而不显示 Snackbar,并且当任何网络不可用时应显示 snackbar。过去几天我一直在努力解决我的问题,但没有运气。我的 snackbar 编码一直有效,就像它每次在 API 23 级以下且不高于 API 级别且不高于此按钮时显示有和无网络时一样。
注意:如果不提供 Snackbar 编码,我的代码可以完美运行。所以我不需要电子邮件意图编码,我只需要使用 Snackbar 进行网络状态编码。
如果有人提供正确的解决方案,那将对我有很大帮助。提前谢谢你。
使用以下函数检查互联网是否可用
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
如果 returns 为真,请继续发送电子邮件。否则显示小吃店。
您需要将以下权限添加到清单中
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ConnectionDetect.class
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionDetect
{
private Context context;
public static boolean chechkagain;
public ConnectionDetect(Context context) {
this.context = context;
}
public boolean isConnectingToInternet() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = cm
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo datac = cm
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if ((wifi != null & datac != null)
&& (wifi.isConnected() | datac.isConnected())) {
chechkagain = true;
synchronized (context) {
context.notify();
}
} else {
chechkagain = false;
}
return chechkagain;
}
}
现在检查互联网是否可用
if (connectionDetect.isConnectingToInternet()) {
//Send Email
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout,
"Please check internet",
Snackbar.LENGTH_LONG);
snackbar.show();
}
coordinatorLayout 是 CoordinatorLayout 的 id,我们要在其中显示小吃店