Java 如何验证当前设备中是否存在移动电话号码

Java 如何验证当前设备中是否存在移动电话号码,java,android,Java,Android,在我的应用程序中,我想验证用户输入的手机号码是否存在于当前设备上。就像所有的银行应用程序一样。如果当前设备上没有注册手机,银行应用程序将不允许您登录 我的问题是如何做到这一点。我尝试过TelephonyManager API和SubscriptionManager API。他们两人都没有提供手机号码。 使用SubscriptionManager API,我可以获得以下信息,但不能获得手机号码 SubscriptionManager subscriptionManager = Subscripti

在我的应用程序中,我想验证用户输入的手机号码是否存在于当前设备上。就像所有的银行应用程序一样。如果当前设备上没有注册手机,银行应用程序将不允许您登录

我的问题是如何做到这一点。我尝试过TelephonyManager API和SubscriptionManager API。他们两人都没有提供手机号码。 使用SubscriptionManager API,我可以获得以下信息,但不能获得手机号码

SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext()); 
List subsInfoList = subscriptionManager.getActiveSubscriptionInfoList(); 
if (subsInfoList != null) { 
    Log.d("log", "number of sims = " + subsInfoList.size()); 
    Log.d("log", "Current list = " + subsInfoList); 
    for (SubscriptionInfo subscriptionInfo : subsInfoList) { 
        Log.d("log", " Number is " + subscriptionInfo.getNumber()); 
        tvNumber.setText(subscriptionInfo.getNumber()); 
    } 
} 
模拟市民人数=1

Current list = [{id=1, iccId=89914509009117870249 simSlotIndex=0 displayName=airtel carrierName=airtel nameSource=2 iconTint=-13408298 dataRoaming=1 iconBitmap=android.graphics.Bitmap@326dab88 mcc 404 mnc 45 status 1}] 
Number is

TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String mobileNumber = tMgr.getLine1Number(); Log.d("log", "mobile number = " + mobileNumber);

如果您将一次性密码发送到您期望的设备号码,您可以要求他们输入该密码,以证明他们当前可以访问该设备

您可以使用提示选择器为他们选择电话号码:

// Construct a request for phone numbers and show the picker
private void requestHint() {
    HintRequest hintRequest = new HintRequest.Builder()
           .setPhoneNumberIdentifierSupported(true)
           .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
            apiClient, hintRequest);
    startIntentSenderForResult(intent.getIntentSender(),
            RESOLVE_HINT, null, 0, 0, 0);
}

// Obtain the phone number from the result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == RESOLVE_HINT) {
      if (resultCode == RESULT_OK) {
          Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
          // credential.getId();  <-- will need to process phone number string
      }
  }
}
参考文献:


如果您将一次性密码发送到您期望的设备号码,您可以要求他们输入该密码,以证明他们当前可以访问该设备

您可以使用提示选择器为他们选择电话号码:

// Construct a request for phone numbers and show the picker
private void requestHint() {
    HintRequest hintRequest = new HintRequest.Builder()
           .setPhoneNumberIdentifierSupported(true)
           .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
            apiClient, hintRequest);
    startIntentSenderForResult(intent.getIntentSender(),
            RESOLVE_HINT, null, 0, 0, 0);
}

// Obtain the phone number from the result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == RESOLVE_HINT) {
      if (resultCode == RESULT_OK) {
          Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
          // credential.getId();  <-- will need to process phone number string
      }
  }
}
参考文献:


将最后一行替换为

TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
确保启用以下权限非常重要:

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

注意:这可能返回null、空字符串或
“???”


参考:

将最后一行替换为

TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
确保启用以下权限非常重要:

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

注意:这可能返回null、空字符串或
“???”

参考: