Profilo utente
Android ha supportato l'enumerazione dei contatti con il provider ContactsContract a partire dal livello API 5. Ad esempio, l'elenco dei contatti è semplice come l'uso della classe ContactContracts.Contacts , come illustrato nell'esempio di codice seguente:
// Get the URI for the user's contacts:
var uri = ContactsContract.Contacts.ContentUri;
// Setup the "projection" (columns we want) for only the ID and display name:
string[] projection = {
ContactsContract.Contacts.InterfaceConsts.Id,
ContactsContract.Contacts.InterfaceConsts.DisplayName };
// Use a CursorLoader to retrieve the user's contacts data:
CursorLoader loader = new CursorLoader(this, uri, projection, null, null, null);
ICursor cursor = (ICursor)loader.LoadInBackground();
// Print the contact data to the console if reading back succeeds:
if (cursor != null)
{
if (cursor.MoveToFirst())
{
do
{
Console.WriteLine("Contact ID: {0}, Contact Name: {1}",
cursor.GetString(cursor.GetColumnIndex(projection[0])),
cursor.GetString(cursor.GetColumnIndex(projection[1])));
} while (cursor.MoveToNext());
}
}
A partire da Android 4 (livello API 14), la classe ContactsContact.Profile è disponibile tramite il ContactsContract
provider. ContactsContact.Profile
fornisce l'accesso al profilo personale per il proprietario di un dispositivo, che include i dati di contatto, ad esempio il nome e il numero di telefono del proprietario del dispositivo.
Autorizzazioni necessarie
Per leggere e scrivere i dati di contatto, le applicazioni devono richiedere rispettivamente le READ_CONTACTS
autorizzazioni e WRITE_CONTACTS
.
Inoltre, per leggere e modificare il profilo utente, le applicazioni devono richiedere le READ_PROFILE
autorizzazioni e WRITE_PROFILE
.
Aggiornamento dei dati del profilo
Dopo aver impostato queste autorizzazioni, un'applicazione può usare le normali tecniche Android per interagire con i dati del profilo utente. Ad esempio, per aggiornare il nome visualizzato del profilo, chiamare ContentResolver.Update con un Uri
oggetto recuperato tramite la proprietà ContactsContract.Profile.ContentRawContactsUri , come illustrato di seguito:
var values = new ContentValues ();
values.Put (ContactsContract.Contacts.InterfaceConsts.DisplayName, "John Doe");
// Update the user profile with the name "John Doe":
ContentResolver.Update (ContactsContract.Profile.ContentRawContactsUri, values, null, null);
Lettura dei dati del profilo
L'esecuzione di una query a ContactsContact.Profile.ContentUri legge i dati del profilo. Ad esempio, il codice seguente leggerà il nome visualizzato del profilo utente:
// Read the profile
var uri = ContactsContract.Profile.ContentUri;
// Setup the "projection" (column we want) for only the display name:
string[] projection = {
ContactsContract.Contacts.InterfaceConsts.DisplayName };
// Use a CursorLoader to retrieve the data:
CursorLoader loader = new CursorLoader(this, uri, projection, null, null, null);
ICursor cursor = (ICursor)loader.LoadInBackground();
if (cursor != null)
{
if (cursor.MoveToFirst ())
{
Console.WriteLine(cursor.GetString (cursor.GetColumnIndex (projection [0])));
}
}
Passaggio al profilo utente
Infine, per passare al profilo utente, creare una finalità con un'azione ActionView
e ContactsContract.Profile.ContentUri
quindi passarla al StartActivity
metodo come segue:
var intent = new Intent (Intent.ActionView,
ContactsContract.Profile.ContentUri);
StartActivity (intent);
Quando si esegue il codice precedente, il profilo utente viene visualizzato come illustrato nello screenshot seguente:
L'uso del profilo utente è simile all'interazione con altri dati in Android e offre un livello aggiuntivo di personalizzazione dei dispositivi.