Android: cómo agregar un contacto a la tarjeta SIM con el SDK?
Estoy escribiendo una aplicación que escribe contactos en la tarjeta SIM de un teléfono Android. Estoy atascado en el punto donde se agrega el número de teléfono: se produce una excepción sin razón aparente.
Aquí hay un fragmento de código.
- MediaPlayer error -38,0
- ¿Cómo administro subproyectos de submódulo git en Eclipse?
- ¿Android con maven? Apk desconocido
- Cómo configurar / obtener datos de perfil con XMPP usando Smack
- Diferentes firmas de apk en Android
import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.provider.ContactsContract.RawContacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.RawContactsEntity; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.RawContacts.Entity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.widget.TextView; [...] try{ // add a row to the RawContacts table ContentValues values = new ContentValues(); values.put(RawContacts.ACCOUNT_TYPE, "com.anddroid.contacts.sim"); values.put(RawContacts.ACCOUNT_NAME, "SIM"); Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values); // get the ID of the newly-added line long rawContactId = ContentUris.parseId(rawContactUri); // add a "name" line to the Data table, linking it to the new RawContact // with the CONTACT_ID column values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); values.put(StructuredName.DISPLAY_NAME, "Name"); cr.insert(Data.CONTENT_URI, values); // this insert succeeds // add a "phone" line to the Data table, linking it to the new RawContact // with the CONTACT_ID column values.clear(); values.put(Data.CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); values.put(Phone.NUMBER, "+12345678901"); values.put(Phone.TYPE, Phone.TYPE_MOBILE); cr.insert(Data.CONTENT_URI, values); // this insert fails with a NullPointerException } catch(Exception e){ String xx=e.toString(); System.out.println(xx); }
La aplicación tiene permisos android.permission.READ_CONTACTS y android.permission.WRITE_CONTACTS.
El teléfono muestra un contacto con el nombre pero no con el teléfono (por cierto, agregar el teléfono a ese contacto usando la interfaz de usuario normal da como resultado un nuevo contacto que se agrega, con nombre y teléfono y el antiguo contacto con el nombre sólo permanece).
¿Alguna idea de por qué la tercera inserción (la segunda en la tabla de datos) falla, mientras que las 2 anteriores (1 en RawContacts y 1 en Data) tienen éxito?
- Square Retrofit Client: ¿Cómo activar / desactivar followRedirects? Cómo interceptar URL de redireccionamiento?
- ¿WebView NO abre el reproductor de vídeo por defecto de android?
- No se puede actualizar un diseño después de agregar una vista (sólo se produce en CustomAdapter)
- Error de enlace no satisfactorio al inicializar el concentrador Myo en Android
- Buscando en el diccionario de Oxford
- ¿Cómo usar la consulta de Firebase equalTo (value, key)?
- Error al inflar clase?
- Diferencia entre preferencia y preferencia compartida en Android
values.put(RawContacts.ACCOUNT_TYPE, "com.anddroid.contacts.sim");
Android No miré el resto, pero podría valer la pena eliminar un 'd'
He replicado éste en mi sistema, pero el contacto consigue borrado tan pronto como el móvil reinicie. Esto significa que los contactos están ahorrando en el sim temporal del móvil. ¿Es esto lo mismo sucediendo a tu lado o me falta algo. Estoy usando sim 3G.
Saludos
Data.CONTACT_ID tiene que ser reemplazado por Data.RAW_CONTACT_ID
- Cómo analizar el XML de SimpleXML
- Std :: string operations (es decir, stol, stoi) no encontrado NDK8d