GetLine1Number() Возвращает пустое, а не пустое
Я хочу получить Mobile Number of Device. Я использовал следующую ссылку кода Эта ссылка
TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
Log.d("msg", "Phone : "+mPhoneNumber);
ВЫХОД в Logcat:
Без SIM-карт Возврат телефонов:
02-01 17:22:45.472: D/msg(29102): Phone : null
С помощью Simcard:
02-01 17:22:45.472: D/msg(29102): Phone :
Я также получил разрешение в <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
в AndroidManifest.xml
Так что я должен делать? Есть ли ошибка?
Ответы
Ответ 1
Чтобы получить номер телефона с устройства, сначала вы должны установить свой собственный номер телефона на устройстве, просто:
Настройки → О телефоне → Состояние → Мой номер телефона
Телефонные номера на SIM-картах не доступны для всех операторов, например, в Индии. Сим не имеют телефонных номеров в любой памяти, поэтому мы не можем получить номер телефона из этого соединения. Однако некоторые страны и операторы имеют номера телефонов на SIM-карте, и мы можем их получить. Чтобы это работало для всех устройств, мы можем использовать две стратегии:
Чтобы избежать этой проблемы, мы можем поймать ошибку и работать соответственно. Как:
TelephonyManager tMgr = (TelephonyManager)
ShowMyLocation.this.getSystemService(Context.TELEPHONY_SERVICE);
String MyPhoneNumber = "0000000000";
try
{
MyPhoneNumber =tMgr.getLine1Number();
}
catch(NullPointerException ex)
{
}
if(MyPhoneNumber.equals("")){
MyPhoneNumber = tMgr.getSubscriberId();
}
Ответ 2
У меня есть другое решение для получения номера телефона, когда диспетчер телефонии возвращается пустым. Надеюсь, это поможет вам.
Вот мой пример кода:
public static final String main_data[] = {
"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"
};
object object = (TelephonyManager) context.getSystemService("phone");
if (!TextUtils.isEmpty(((TelephonyManager) (object)).getLine1Number())) {
}
object = context.getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"), main_data, "mimetype=?", new String[]{
"vnd.android.cursor.item/phone_v2"
}, "is_primary DESC");
if (object != null) {
do {
if (!((Cursor) (object)).moveToNext()) {
break;
}
if (s.equals("vnd.android.cursor.item/phone_v2")) {
String s1 = ((Cursor) (object)).getString(4);
boolean flag1;
if (((Cursor) (object)).getInt(5) > 0) {
flag1 = true;
} else {
flag1 = false;
}
Toast.makeText(SampleActivity.this, "Phone:-" + s1, Toast.LENGTH_LONG).show();
}
} while (true);
((Cursor) (object)).close();
}
Также не забудьте добавить эти два разрешения:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />