この記事は公開されてから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 のパーミッションを追加しておいて下さい。