如何在按下SEND按钮时网络不可用时显示小吃栏

时间:2018-04-16 09:09:27

标签: android contact-form android-snackbar snackbar user-feedback

任何人都可以帮助我如何在按下按钮时无法使用WiFi或移动数据时显示小吃吧。实际上,当用户想要从我的Android应用程序发送反馈表单时,此按钮用于发送电子邮件。

我的要求是: 当用户按下按钮如果有任何可用的网络,那么电子邮件应该直接发送而不显示Snackbar,并且当任何网络不可用时,应显示小吃吧。我过去几天一直试图解决我的问题,但没有运气。我的小吃吧编码一直有效,就像它在API级别23以下而不是上面按下按钮时每次显示和不显示网络一样。

注意:如果不提供Snackbar编码,我的代码工作正常。因此,我不需要电子邮件意图编码,只需要使用Snackbar进行网络状态编码。

如果有人提供正确的解决方案,它将对我有很大帮助。提前谢谢。

2 个答案:

答案 0 :(得分:2)

使用以下功能检查互联网是否可用

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

如果返回true,则继续发送电子邮件。否则展示小吃吧。

您需要在清单中添加以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

答案 1 :(得分:1)

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是我们想要显示小吃店的协调员布局的ID