2011-01-19 11 views
7

Me preguntaba si es posible ampliar la base de datos de Contactos de Android.¿Puedo extender la base de datos de contactos de Androids?

Desde aquí - http://d.android.com/reference/android/provider/ContactsContract.html

Dice:

ContactsContract define un base de datos extensible relacionadas contacto información

extensible sugeriría a mí que puedo añadir más datos a la aplicación de contactos fuera de los valores normales tales como Nombre, número, correo electrónico, número de trabajo, número de casa, etc.

Sin embargo, los ejemplos de esta página - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html solo muestran cómo insertar los valores estándar como el nombre y no cómo agregar un nuevo campo a un contacto.

Además, una búsqueda en la web no ofrece mucha información sobre cómo extender los datos de los contactos.

Entonces, me preguntaba si es posible o si el extensible hace referencia a alguna otra parte de los contactos.

Por ejemplo, me gustaría agregar un campo adicional para los contactos que tienen privilegios especiales en mi aplicación para que cuando un usuario mira los contactos, sepa con qué usuarios pueden usar mi aplicación.

¿Esto es posible?

Respuesta

2

Puede almacenar datos personalizados en la base de datos de contactos. Sin embargo, "cuando un usuario mira los contactos, él o ella sabe con qué usuarios pueden usar mi aplicación", puede que no sea posible si cree que los usuarios podrán ver los datos personalizados que insertó al usar los Contactos Android integrados. solicitud. Debería mostrar los datos personalizados en su propia aplicación.

Los javadocs para la clase ContactsContract.Data deben proporcionar una explicación, así como el Contacts article.

Para usar esto, necesitará obtener una identificación de contacto sin procesar mediante la consulta de RawContacts.

Aquí un código de ejemplo que pueden ayudarle a empezar ...

private void makePowerful(int rawContactId) { 
    ContentValues values = new ContentValues(); 
    values.put(Privilege.RAW_CONTACT_ID, rawContactId); 
    values.put(Privilege.MIMETYPE, Privilege.CONTENT_ITEM_TYPE); 
    values.put(Privilege.PRIVILEGE_LEVEL, Privilege.TYPE_POWERFUL); 
    Uri uri = getContentResolver().insert(Data.CONTENT_URI, values); 
} 

public static final class Privilege implements ContactsContract.DataColumnsWithJoins, ContactsContract.CommonDataKinds.CommonColumns { 
    public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/my_app_privilege"; 
    public static final int TYPE_POWERFUL = 1; 
    public static final int TYPE_WEAK = 2; 
    public static final String PRIVILEGE_LEVEL = DATA1; 

    private Privilege() { } 
} 
+0

Alguna idea de donde el artículo fue a Contactos? El enlace está muerto (: –

+0

He actualizado el enlace, este debería ayudar: http://developer.android.com/guide/topics/providers/contacts-provider.html – satur9nine

+0

Gracias. Es para investigar un problema extraño I tener con la base de datos de contactos: http://wiert.me/2012/07/24/small-follow-up-on-android-help-needed-app-that-cleans-up-the-contacts-mess-that- the-linkedin-app-left-behind/(580 megas grandes, y crecimiento automágico sin ninguna aplicación activa). –

Cuestiones relacionadas