我该如何检查互联网连接并显示“重试”和“取消”对话框?

时间:2016-04-03 00:30:01

标签: java android

我想检查互联网连接是否可用,请致电getData(),但如果没有,请显示带重试取消选项的对话框。

如果点击重试,请检查互联网连接;如果可用则调用getData但如果它不可用,则再次显示该对话框(类似于循环)。

或者,如果点击取消,则完全退出该应用。

我正在使用此课程来检查网络可用性和互联网连接:

public class NetworkCheck {

    public static boolean isAvailableAndConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        boolean isNetworkAvailable = cm.getActiveNetworkInfo() != null;
        boolean isNetWorkConnected = isNetworkAvailable && cm.getActiveNetworkInfo().isConnected();

        return isNetWorkConnected;

    }

}

在MainActivity中,我这样做:

if (NetworkCheck.isAvailableAndConnected(this)) {
            //Caling method to get data
            getData();
        } else {
            final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
            alertDialogBuilder.setTitle("No Internet Connection");
            alertDialogBuilder.setMessage("Failed to load. Please ensure ypu're connected to the internet and try again");
            alertDialogBuilder.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (!NetworkCheck.isAvailableAndConnected(context)) {
                        alertDialogBuilder.show();
                    } else {
                        getData();
                    }


                }
            });
            alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();

                }
            });
            alertDialogBuilder.show();

        }

根据以上代码,我有三个问题:

  1. 在行if (!NetworkCheck.isAvailableAndConnected(context)) {上下文以红色突出显示,当我将鼠标悬停时,我看到无法解析符号'上下文'。如果我将方法留空或键入thisgetActivity; Android Studio抱怨。哪个参数显示我通过了该方法?
  2. 调用finish()只会杀死该活动。不是整个应用程序被杀死了怎么办?
  3. 我还有什么不对的?

1 个答案:

答案 0 :(得分:1)

1)如果你没有使用片段,在上下文的地方,你可以像这样做一个解决方法(首先你声明):

        final Context mContext;
        mContext = this;

然后您将 context 替换为 mContext

2)杀死活动不是建议(您可能已经阅读过活动生命周期),但您可以尝试android.os.Process.killProcess(android.os.Process.myPid());