Saltar al contenido

me sale el IMEI null en Android Q?

Intenta interpretar el código de forma correcta previamente a usarlo a tu proyecto y si tquieres aportar algo puedes dejarlo en los comentarios.

Solución:

Android Q ha restringido el acceso tanto para IMEI como para el número de serie. Está disponible solo para plataformas y aplicaciones con permiso especial del operador. Además, el permiso READ_PRIVILEGED_PHONE_STATE no está disponible para aplicaciones que no sean de plataforma.

Si intenta acceder arroja la siguiente excepción

java.lang.SecurityException: getImeiForSlot: The user 10180 does not meet the requirements to access device identifiers.

Consulte la documentación: https://developer.android.com/preview/privacy/data-identifiers#device-ids

Consulte también Problema

Esto simplemente no funcionaría a partir de Android Q. Las aplicaciones de terceros no pueden usar IMEI ni el número de serie de un teléfono y otros identificadores de dispositivos no reiniciables.

Los únicos permisos que pueden usarlos son READ_PRIVILEGED_PHONE_STATE y no pueden ser utilizados por aplicaciones de terceros: aplicaciones de fabricación y software. Si usa ese método, obtendrá un error de excepción de seguridad u obtendrá null .

Todavía puede intentar obtener una identificación única usando:

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);

Llego tarde para publicar la respuesta. Todavía creo que mi respuesta ayudará a alguien. Android 10 Desarrollador restringido para acceder al número IMEI.

Puede tener una solución alternativa obteniendo ID de software. Puede usar la identificación del software como una identificación única. Encuentre el código a continuación como lo uso en la aplicación.

public static String getDeviceId(Context context) 

 String deviceId;

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
        deviceId = Settings.Secure.getString(
                context.getContentResolver(),
                Settings.Secure.ANDROID_ID);
     else 
        final TelephonyManager mTelephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (mTelephony.getDeviceId() != null) 
            deviceId = mTelephony.getDeviceId();
         else 
            deviceId = Settings.Secure.getString(
                    context.getContentResolver(),
                    Settings.Secure.ANDROID_ID);
        
    

    return deviceId;

Te mostramos reseñas y puntuaciones

No se te olvide comunicar este ensayo si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *