GetLine1Number () Devuelve blanco, no nulo
Quiero obtener el número de dispositivo móvil. He utilizado la siguiente referencia de código de Alex Volovoy's This Link
TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); Log.d("msg", "Phone : "+mPhoneNumber);
SALIDA en Logcat:
- ¿Cómo distinguir el estado de encendido / apagado de la pantalla durante la llamada entrante?
- Cómo detectar el estado contestado o rechazado en la llamada saliente
- GetNeighboringCellInfo () devuelve la lista null
- ¿Cómo puedo comprobar si la tarjeta SIM está disponible en un dispositivo Android?
- Cómo no disparar PhoneStateListener.CALL_STATE_RINGING si ya está hablando y un segundo llamante está llamando
Sin devoluciones de los teléfonos de Simcard:
02-01 17:22:45.472: D/msg(29102): Phone : null
Con Simcard:
02-01 17:22:45.472: D/msg(29102): Phone :
También he tomado permiso en <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
en AndroidManifest.xml
¿Entonces qué debo hacer? ¿Hay algún error?
- Ya que Android 6.0 escuchando los cambios de PhoneStateListener.LISTEN_DATA_CONNECTION_STATE parece que ya no necesita permiso de READ_PHONE_STATE
- Obtener la velocidad actual de Internet (móvil y Wifi) con Android
- Cómo proporcionar vibraciones personalizadas en las llamadas entrantes específicas
- Aplicación Android de telefonía que mantiene el foco en las llamadas entrantes
- Recuperar el número de teléfono de la llamada entrante en Android
- ¿Cómo rastrear los mensajes en Android?
- ¿Cómo saber si estoy en una llamada en Android?
- Cómo modificar la vista de la pantalla de llamadas entrantes y salientes en android
Para obtener el número de teléfono del dispositivo, primero tiene que establecer su propio número de teléfono en el dispositivo, sólo a través de:
Configuración -> Acerca del teléfono -> Estado -> Mi número de teléfono
Los números de teléfono no están disponibles en la tarjeta SIM para cada operador, como en la India Sim no tienen números de teléfono en cualquier memoria, por lo que no podemos obtener el número de teléfono de esta conexión. Sin embargo, algunos países y operadores han almacenado números de teléfono en SIM, y podemos obtenerlos. Para que esto funcione para todos los dispositivos podemos emplear dos estrategias:
Para evitar este problema, podemos detectar el error y trabajar en consecuencia. Me gusta:
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(); }
Tengo otra solución para obtener un número de teléfono cuando el administrador de telefonía regresa en blanco. Espero que te ayude.
Aquí está mi código de ejemplo:
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(); }
También no olvide agregar estos dos permisos:
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" />
- El envío de JSON como datos adicionales en una transmisión de Android a través de ADB se formatea incorrectamente
- Obtener el radio del mapa visible en Android