今回はXamarin Android で端末の電話帳に保存されている連絡先を編集する方法についてです。
端末の電話帳アプリ内に保存されている連絡先データを編集する場合、自身のアプリから編集したい連絡先のIDを指定して電話帳アプリを開く というフローになります。
編集したい連絡先のIDは、
Xamarin.Essensials.Contacts.GetAllAsync();
で取得できる連絡先データ内のidが該当データです。
では実際のコードです。
public void Edit(string contactId) {
var activity = Xamarin.Essentials.Platform.CurrentActivity;
var cursor = Xamarin.Essentials.Platform.CurrentActivity.ContentResolver.Query(ContactsContract.Contacts.ContentUri, null, null, null, null);
if (cursor.MoveToFirst()) {
do {
string status = "";
var Id = cursor.GetLong(cursor.GetColumnIndex(ContactsContract.Contacts.InterfaceConsts.Id));
var key = cursor.GetString(cursor.GetColumnIndex(ContactsContract.Contacts.InterfaceConsts.LookupKey));
if (Id.ToString() == contactId) {
var selectedContactUri = ContactsContract.Contacts.GetLookupUri(Id, key);
Intent editIntent = new Intent(Intent.ActionEdit);
editIntent.SetDataAndType(selectedContactUri, ContactsContract.Contacts.ContentItemType);
editIntent.PutExtra("finishActivityOnSaveCompleted", true);
activity.StartActivity(editIntent);
return;
}
} while (cursor.MoveToNext());
}
}
ContentResolver.Queryで連絡先データを持ってきて、そこから編集すべき連絡先を特定、intentに指定し、連絡帳アプリを起動させる
といった感じです。