按下 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,我们要在其中显示小吃店