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