【发布时间】:2013-11-29 00:14:05
【问题描述】:
我想打开“保存新联系人”对话框,其中预先填写了街道地址、电话号码、电子邮件等。然后用户可以修改、添加或保存。
我见过一些方法。
1) 此方法已被弃用,但在大多数情况下都有效(无法使用复合类型,如地址)。
Intent i = new Intent(Intent.ACTION_INSERT_OR_EDIT);
i.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
i.putExtra(Insert.NAME,"Name");
i.putExtra(Insert.PHONE,"Number");
startActivity(i);
2) 这种方法似乎是一个很好的解决方案,但我无法将此数据附加到打开联系人应用程序的意图中。它仅用于以编程方式自动插入新联系人。
ArrayList<ContentProviderOperation> op=new ArrayList<ContentProviderOperation>();
/* ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName())
.build()); */
op.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.build());
op.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, op);
解决此问题的最佳做法是什么?
谢谢。
【问题讨论】:
-
“此方法已弃用”——真的吗?
-
我从 IDE 收到此警告 此行的多个标记 - 字段 Contacts.Intents.Insert.NAME 已弃用 - 类型 Contacts.Intents.Insert 已弃用
标签: android android-intent android-contacts