Me gustaría leer los contactos de la API de ContactsContract que pertenece solo al teléfono/SIM y me gustaría evitar los contactos sincronizados de otras aplicaciones como Facebook y Gmail. Probé mi código en el simulador y funciona bien, pero en dispositivos reales no devuelve ningún resultado.¿Cuál es el tipo/nombre de cuenta predeterminado para los contactos en la aplicación de contacto de Android?
ContentResolver cr = AndroidContext.getContext()
.getContentResolver();
Cursor nativeContacts = cr.query(RawContacts.CONTENT_URI,
new String[] { RawContacts._ID, RawContacts.VERSION, RawContacts.CONTACT_ID },
RawContacts.DELETED + "<> 1 AND " + RawContacts.CONTACT_ID
+ " IS NOT NULL AND " + RawContacts.ACCOUNT_NAME + " IS NULL AND "
+ RawContacts.ACCOUNT_TYPE + " IS NULL", null, null);
Supongo que en dispositivos el tipo de cuenta y el nombre de la cuenta predeterminada no son nulos, ¿cuál es la solución?
Así que probé una pequeña aplicación de muestra para buscar el tipo de cuenta y el nombre utilizados en diferentes dispositivos. En ** HTC **, el tipo de cuenta y el nombre fueron com.htc.android.pcsc y com.android.sim mientras que en Sony Xperia fueron com.sonyerricson.contacts. Entonces parece que todos los dispositivos usan diferentes tipos y nombres, ahora la pregunta es ¿cómo obtengo la cuenta predeterminada? ¿Puedo hacer algo como esto AccountManager.getAccounts() [0] y confiar en que esta será la cuenta predeterminada en el dispositivo. –
Hola, Rahul, a todos. Me gustaría saber la respuesta a esta pregunta también. Deseo extraer información de contacto solo desde el teléfono/sim. – Creniale
'¿Puedo hacer algo como esto AccountManager.getAccounts() [0] y confiar en que esta será la cuenta predeterminada en el dispositivo' No, no puede. Si el nombre de la cuenta está vacío, no puede obtenerlo desde 'AccountManager.getAccounts()' – Autobots