我已经浏览了sto上的所有链接。
private String getMyPhoneNumber(){
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyMgr.getLine1Number();
}
private String getMy10DigitPhoneNumber(){
String s = getMyPhoneNumber();
return s.substring(2);
}
但大多数情况下它返回null。 是否无法在Android中的电话管理器中追踪电话号码,或者是否有其他出路。
答案 0 :(得分:1)
在您的清单文件中,请添加以下行:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
同样在java文件中添加以下行:
TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
答案 1 :(得分:0)
以下是有关如何获取SimSerial和其他内容的示例。
// Collecting device details
TelephonyManager tm = (TelephonyManager) c
.getSystemService(Context.TELEPHONY_SERVICE);
String model = android.os.Build.MODEL;
String brand = android.os.Build.BRAND;
String id = tm.getDeviceId();
String simSerial = tm.getSimSerialNumber();
String simCountry = tm.getSimCountryIso();
String simOperator = tm.getSimOperatorName();
String networkCountry = tm.getNetworkCountryIso();
但获取电话号码是不可能的,但我找到了一个小解决方案 //返回用户电话号码 public String getUserPhone(){
AccountManager mAccountManager = AccountManager.get(mContext);
Account[] mAccounts = mAccountManager.getAccounts();
for(Account mAccount:mAccounts){
Log.d("X","name:"+mAccount.name);
Log.d("X","type:"+mAccount.type);
if(isPhoneValid(mAccount.name)){
return mAccount.name;
}
}
return null;
}
public static boolean isPhoneValid(String phone) {
boolean retval = false;
String phoneNumberPattern =
"(\\d-)?(\\d{3}-)?\\d{3}-\\d{4}";
retval = phone.matches(phoneNumberPattern);
String msg = "NO MATCH: pattern:" + phone
+ "\r\n regex: " + phoneNumberPattern;
if (retval) {
msg = " MATCH: pattern:" + phone
+ "\r\n regex: " + phoneNumberPattern;
}
System.out.println(msg + "\r\n");
return retval;
}
你必须设置
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
使用帐户。
正如您所看到的,我正在从帐户中收集电话号码,这仅适用于用户手机上有WhatsApp,Telegram或类似内容的情况。因此,如果上述方法[getUserPhone()]返回null,我曾经手动询问电话号码。