通知用户用户未在任何屏幕上连接到互联网?

时间:2016-10-05 22:26:23

标签: android android-layout android-fragments

我正在开发一个应用程序,在app中的任何位置(在任何片段中 - 如果我错了就纠正我),如果用户没有连接到互联网,弹出窗口(我想我必须使用吐司) )要求用户

  • 打开wi-fi(如果wi-fi关闭且没有数据连接)或
  • 连接到wi-fi(如果wi-fi已启用,但未连接)或
  • 打开手机中的数据。
  1. 如何在应用中的任何位置显示弹出窗口?
  2. 我应该让用户进入设置并打开wifi或采取相应的操作,还是应该停止显示消息?
  3. 此应用程序肯定需要互联网连接。感谢。

1 个答案:

答案 0 :(得分:1)

首先,您必须检查您的设备是否已连接到互联网。以下代码将帮助您检查。

检查互联网可用性的方法:

 public boolean isOnline() {
        ConnectivityManager cm =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        return netInfo != null && netInfo.isConnectedOrConnecting();
    }

如果上面的布尔值为true,那么您可以继续操作,或者您必须指示用户转到“设置”并打开移动数据或Wi-Fi连接。请参阅以下代码以指导用户。如果上面的布尔值返回false,则调用以下方法。

displayMobileDataSettingsDialog(your current activity,context);

显示提醒的方法:

public static AlertDialog displayMobileDataSettingsDialog(final Activity activity, final Context context){
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("No Internet");
        builder.setMessage("Please connect to your internet");
        builder.setPositiveButton("Wifi", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                context.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
                dialog.cancel();
            }
        });
        builder.setNegativeButton("Mobile Data", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                 Intent intent = new Intent();
                 intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$DataUsageSummaryActivity"));
                 dialog.cancel();
                 startActivity(intent);
                 activity.finish();

            }
        });
        builder.show();

        return builder.create();
    }

可选 有时您的设备可能已连接到互联网,但没有收到数据,在这种情况下,您可以使用以下方法检查是否实际收到了设备的数据。

public boolean isInternetAvailable() {
        try {
            InetAddress ipAddr = InetAddress.getByName("google.com"); //You can replace it with your name
            return !ipAddr.equals("");

        } catch (Exception e) {
            return false;
        }

    }

希望它对你有所帮助。