Android.provider.Settings.Secure.ANDROID_ID devuelve "android_id"
¿Hay razón android.provider.Settings.Secure.ANDROID_ID es devolver la constante "android_id" en lugar de un número de 64 bits como una cadena hexadecimal?
Descripción: android.provider.Settings.Secure.ANDROID_ID
- Alternativa de Android para Line2D?
- IntelliJ Idea dando java.lang.OutOfMemoryError: Error de espacio de montón de Java incluso después de aumentar el tamaño de montón
- OnPostExecute no se llama después de la finalización AsyncTask
- ¿Cuál es la diferencia entre largo y largo en código android?
- Herramientas de análisis de memoria / rendimiento para Android
- Un número de 64 bits (como una cadena hexadecimal) que se genera aleatoriamente cuando el usuario configura el dispositivo por primera vez y debe permanecer constante durante toda la vida del dispositivo del usuario. El valor puede cambiar si se realiza un restablecimiento de fábrica en el dispositivo.
Estoy usando un Samsung Galaxy S4 w /
<uses-sdk android:minSdkVersion="13" android:targetSdkVersion="19" />
Aclamaciones
- ¿Una manera fácil de detectar dónde se está bloqueando el hilo de ui en Android?
- Cómo hacer HorizontalScrollView RIGHT a LEFT Scroll android
- ¿Cómo se muestra un diálogo de alerta sólo en la primera ejecución de mi aplicación?
- Apache Commons IO en Android
- Inbox de Google como elemento de RecyclerView abrir animación
- Android ViewAnimator base de cambio de altura en el niño
- ¿Cómo configurar el MediaRecorder para obtener el mejor efecto de calidad de video?
- Google Play Services "No auténtico" en Glass
El android.provider.Settings.Secure.ANDROID_ID
es una constante que se puede utilizar en android.provider.Settings.Secure.getString(ContentResolver resolver, String name)
. De forma predeterminada, se establece en "android_id", ya que es el nombre de la propiedad que contiene el ID de Android actual.
Utilice este código para obtener el ID real:
String androidId = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);
Esto es sólo para elaborar la respuesta de @ Mike Laren, que es correcto. Pero hay un par de trampas a tener en cuenta, como se documenta en el siguiente código, que es lo que estoy utilizando actualmente:
// Get the unique (supposedly) ID for this Android device/user combination long androidId = convertHexToLong(Settings.Secure.getString( _applicationContext.getContentResolver(), Settings.Secure.ANDROID_ID));
….
// Method to convert a 16-character hex string into a Java long. This only took me about an hour, // due to a known bug in Java that it took them 13 years to fix, and still isn't fixed in the // version of Java used for Android development. // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4215269 // http://stackoverflow.com/questions/1410168/how-to-parse-negative-long-in-hex-in-java // On top of that it turns out that on a HTC One the Settings.Secure.ANDROID_ID string may be 15 // digits instead of 16! private long convertHexToLong(String hexString) { hexString = "0000000000000000" + hexString; int i = hexString.length(); hexString = hexString.substring(i - 16, i); try { return Long.parseLong(hexString.substring(0, 8), 16) << 32 | Long.parseLong(hexString.substring(8, 16), 16); } catch (Exception e) { return 0L; } }
- ¿Cómo deshabilitar el archivo de diario SQLite de SQL?
- Cómo mostrar 2 vistas de texto en la misma línea en Android