1

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

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

注意:如果不提供 Snackbar 编码,我的代码运行良好。所以我不需要电子邮件意图编码,只需要使用 Snackbar 进行网络状态编码。

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

4

2 回答 2

3

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

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" />
于 2018-04-16T09:27:53.747 回答
2

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 是我们要在其中显示小吃店的 Coordinator Layout 的 id

于 2018-04-16T09:31:04.800 回答