【问题标题】:Mobile network check移动网络检查
【发布时间】:2018-12-15 16:56:32
【问题描述】:

我正在开发一个集成了 OTP 屏幕的应用程序。那里有一个小问题。我必须检查两个条件,一个是,如果网络不可用,那么我必须显示一条错误消息 Network not available。否则,如果用户输入了错误的 OTP,则错误消息应显示“输入了错误的 OTP”。

现在我正在为这两种情况显示一个共同的消息。没有,否则。我想把它们分成两部分。我的问题是我们如何检查移动网络问题,如果它可用或不可用?

if (task.isSuccessful()) {
  if (previousScreenTitle == R.string.login) {
    userPrivateInfo = Constants.ALL_USERS_REFERENCE.child(userMobileNumber);
    userPrivateInfo.addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        /* Check if User mobile number is found in database */
        if (dataSnapshot.exists()) {
          startActivity(new Intent(OTP.this, NammaApartmentsHome.class));
        }
        /* User record was not found in firebase hence we navigate them to Sign Up page*/
        else {
          Intent intent = new Intent(OTP.this, SignUp.class);
          intent.putExtra(Constants.MOBILE_NUMBER, userMobileNumber);
          startActivity(intent);
        }
        finish();
      }

      @Override
      public void onCancelled(DatabaseError databaseError) {

      }
    });
  } else {
    setResult(Activity.RESULT_OK, new Intent());
    finish();
  }
} else {
  textResendOTPOrVerificationMessage.setText(R.string.check_network_connection);
}

【问题讨论】:

标签: android


【解决方案1】:

使用这个方法

private boolean chechInternetConnection() {
    connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager != null) {
        if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
                connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
            connected = true;
            Log.i("Internet", "Connected");
        } else {
            connected = false;
            Log.i("Internet", "Not Connected");
        }
    }
    return connected;
}

【讨论】:

    【解决方案2】:

    以下 sn-p 显示如何使用ConnectivityManager 查询活动网络并确定其是否具有 Internet 连接。

    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null &&
                          activeNetwork.isConnectedOrConnecting();
    

    确定您的互联网连接类型

    可以通过移动数据、WiMAX、Wi-Fi 和以太网连接来提供设备连接。通过查询活动网络的类型,如下图所示,您可以根据可用带宽更改刷新率。

    boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    

    Check Official Documentation详细了解。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      相关资源
      最近更新 更多