重複の可能性:
プログラムで連絡先を追加するにはどうすればよいですか?
Google検索の助けを借りて、Androidアプリケーションに連絡先を追加することができました。これは機能しますが、追加された連絡先が電話の連絡先リスト(電話帳)に表示されません。
これを修正するのを手伝ってもらえますか?どこを見ればいいのかわかりませんが、バージョン管理の問題でしょうか?この問題に遭遇した人が私を助けてくれるとありがたいです。
この例に従って、コードを設定しました。
重複の可能性:
プログラムで連絡先を追加するにはどうすればよいですか?
Google検索の助けを借りて、Androidアプリケーションに連絡先を追加することができました。これは機能しますが、追加された連絡先が電話の連絡先リスト(電話帳)に表示されません。
これを修正するのを手伝ってもらえますか?どこを見ればいいのかわかりませんが、バージョン管理の問題でしょうか?この問題に遭遇した人が私を助けてくれるとありがたいです。
この例に従って、コードを設定しました。
次の方法で、電話帳に新しい連絡先を挿入します。
public void insert(String lastName, String firstName, String phoneNumber, String photo_uri)
{
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_TYPE, null);
builder.withValue(RawContacts.ACCOUNT_NAME, null);
ops.add(builder.build());
// Name
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, lastName);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, firstName);
ops.add(builder.build());
// Number
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);
builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
ops.add(builder.build());
// Picture
try
{
Bitmap mBitmap = Media.getBitmap(context.getContentResolver(), Uri.parse(photo_uri));
ByteArrayOutputStream image = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.JPEG , 100, image);
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray());
ops.add(builder.build());
}
catch (Exception e)
{
e.printStackTrace();
}
// Add the new contact
ContentProviderResult[] res;
try
{
res = KramerApplication.getInstance().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
if (res != null && res[0] != null)
{
String uri = res[0].uri.getPath().substring(14);
return new Integer(uri).intValue(); // Book ID
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
使用法:
int book_id = insert("Doe", "John", "111-222-333", "content://com.my.package/drawable/photo");
book_id
エントリの行IDです。