Androidで電話帳にデータを追加するサンプル

Android

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Androidの電話帳にプログラムから名前と携帯の電話番号、メールアドレスを登録するサンプルを作りました。
以下がソースになります。Androidのバージョンは2.3.3です。

package sample.contacts;

import android.app.Activity;
import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Contacts.Data;

public class SampleContacts extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		ContentValues values = new ContentValues();
		Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);

		long rawContactId = ContentUris.parseId(rawContactUri);
		values.clear();
		values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
		values.put(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
		values.put(StructuredName.DISPLAY_NAME, "hakamata");
		getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

		// 携帯の電話番号を登録
		Uri mobileUri = Uri.withAppendedPath(rawContactUri, Data.CONTENT_DIRECTORY);
		values.clear();
		values.put(Phone.TYPE, Phone.TYPE_MOBILE);
		values.put(Phone.IS_SUPER_PRIMARY, 1);
		values.put(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
		values.put(Phone.NUMBER, "09012345678");
		getContentResolver().insert(mobileUri, values);

		// 携帯のメアドを登録
		Uri emailUri = Uri.withAppendedPath(rawContactUri, Data.CONTENT_DIRECTORY);
		values.clear();
		values.put(Email.TYPE, Email.TYPE_MOBILE);
		values.put(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
		values.put(Email.DATA1, "test@sample.jp");
		getContentResolver().insert(emailUri, values);
	}
}

AndroidManifest.xmlに
android.permission.WRITE_CONTACTS
のパーミッションを追加しておいて下さい。

エミュレーターでサンプルを実行します。
実行後にアドレス帳を見てみると以下のようになってます。