相关疑难解决方法(0)

修改联系信息

我正在尝试插入和更新现有联系人的一条信息,因此我创建了一个示例应用程序以开发功能.我希望我的示例应用程序执行的操作是插入(或者如果存在)更新联系人的电子邮件地址.

我正在通过系统Intent选择一个联系人,如下所示:

    startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);
Run Code Online (Sandbox Code Playgroud)

返回的URI是Contact(RawContact?)的URI,它被选中并以这种形式出现: content://com.android.contacts/contacts/lookup/0r2-2A90214945/2.

我可以通过执行以下代码来撤回所有Data(RawContact?)项目:

Cursor cursor = contentResolver.query(mContactUri, null, null, null, null);
try {
    if (cursor.moveToFirst()) {
        for(int i=0; i < cursor.getColumnCount(); i++) {
            String message = cursor.getColumnName(i);
            Log.v("", message);
        }
    }
} finally {
    cursor.close();
}
Run Code Online (Sandbox Code Playgroud)

从这里我应该能够确定联系人是否已经有一个CommonDataTypes.Email Data成员:

cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;
Run Code Online (Sandbox Code Playgroud)

然后执行以下的任一个InsertUpdate所述数据:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newInsert(mContactUri)
    .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
    .withValue(Email.DISPLAY_NAME, "somebody@android.com")
    .withValue(Email.TYPE, Email.TYPE_HOME)
    .build()); …
Run Code Online (Sandbox Code Playgroud)

android contactscontract android-contacts

18
推荐指数
1
解决办法
9207
查看次数