Android自定义字段未显示在联系人中
我正在尝试使用为我的应用程序定义的MIME类型的自定义字段更新现有联系人。这将添加到联系人应用程序中的联系人中,但在那里不可见。我不确定我遗漏了什么,如果您发现以下代码有任何错误,请提出建议-Android自定义字段未显示在联系人中,android,custom-fields,Android,Custom Fields,我正在尝试使用为我的应用程序定义的MIME类型的自定义字段更新现有联系人。这将添加到联系人应用程序中的联系人中,但在那里不可见。我不确定我遗漏了什么,如果您发现以下代码有任何错误,请提出建议- ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); ContentProviderOperation.Builder builder = Co
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder builder = ContentProviderOperation
.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME);
builder.withValue(RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE);
operationList.add(builder.build());
operationList
.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, contactId)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
"Display Name")
.build());
builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
// builder =
// ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,
contactId);
builder.withValue(ContactsContract.Data.MIMETYPE, MIMETYPE);
builder.withValue(ContactsContract.Data.DATA1, contact.getId());
builder.withValue(ContactsContract.Data.DATA2, "Test Action");
builder.withValue(ContactsContract.Data.DATA3, "Test Action");
operationList.add(builder.build());
ArrayList操作列表=新建ArrayList();
ContentProviderOperation.Builder=ContentProviderOperation
.newInsert(rawscontacts.CONTENT\u URI);
builder.withValue(rawscontacts.ACCOUNT\u NAME、AccountGeneral.ACCOUNT\u NAME);
builder.withValue(RawContacts.ACCOUNT类型、AccountGeneral.ACCOUNT类型);
add(builder.build());
操作列表
.add(ContentProviderOperation
.newInsert(contacts合同.Data.CONTENT\u URI)
.withValueBackReference(
Contacts contract.Data.RAW_CONTACT_ID,contactId)
.有价值(
Contacts contract.Data.MIMETYPE,
ContactsContract.CommonDataTypes.StructuredName.CONTENT\u ITEM\u TYPE)
.有价值(
Contacts contract.CommonDataTypes.StructuredName.DISPLAY\u NAME,
“显示名称”)
.build());
builder=ContentProviderOperation.newInsert(RawContacts.CONTENT\u URI);
//建筑商=
//ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\u URI);
带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID、,
联系人ID);
builder.withValue(contacts contract.Data.MIMETYPE,MIMETYPE);
builder.withValue(contacts contract.Data.DATA1,contact.getId());
builder.withValue(contacts contract.Data.DATA2,“测试动作”);
builder.withValue(contacts contract.Data.DATA3,“测试动作”);
add(builder.build());
我使用的MIME类型与contacts.xml文件中定义的用于SyncAdapter的MIME类型相同
请帮助…您可以使用以下代码片段修改联系人:
public void update()
{
int id = 1;
String firstname = "Contact's first name";
String lastname = "Last name";
String number = "000 000 000";
String photo_uri = "android.resource://com.my.package/drawable/default_photo";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
// Name
Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[]{String.valueOf(id), 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.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?"+ " AND " + ContactsContract.CommonDataKinds.Organization.TYPE + "=?", new String[]{String.valueOf(id), ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_HOME)});
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number);
ops.add(builder.build());
// Picture
try
{
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(photo_uri));
ByteArrayOutputStream image = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG , 100, image);
builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[]{String.valueOf(id), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE});
builder.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray());
ops.add(builder.build());
}
catch (Exception e)
{
e.printStackTrace();
}
// Update
try
{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void update()
{
int-id=1;
String firstname=“联系人的名字”;
字符串lastname=“lastname”;
字符串编号=“000”;
String photo_uri=“android。resource://com.my.package/drawable/default_photo";
ArrayList ops=新的ArrayList();
//名字
Builder=ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\u URI);
builder.with selection(contacts contract.Data.CONTACT_ID+“=?”+”和“+contacts contract.Data.MIMETYPE+”=?”,新字符串[]{String.valueOf(ID),contacts contract.commondatatypes.StructuredName.CONTENT_ITEM_TYPE});
builder.withValue(ContactsContract.CommonDataTypes.StructuredName.FAMILY_NAME,lastname);
builder.withValue(ContactsContract.CommonDataTypes.StructuredName.GIVEN_NAME,firstname);
ops.add(builder.build());
//数
builder=ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\u URI);
builder.with selection(contacts contract.Data.CONTACT_ID+“=?”+”和“+contacts contract.Data.MIMETYPE+”=?“+”和“+contacts contract.commondatatypes.Organization.TYPE+”=?”,新字符串[]{String.valueOf(ID),contacts contract.commondatatypes.Phone.CONTENT_项_TYPE,String.valueOf(contacts.commondatatypes.Phone.TYPE_HOME)});
builder.withValue(contacts contract.commondatatypes.Phone.NUMBER,NUMBER);
ops.add(builder.build());
//图画
尝试
{
位图Bitmap=MediaStore.Images.Media.getBitmap(getContentResolver(),Uri.parse(photo_Uri));
ByteArrayOutputStream image=新建ByteArrayOutputStream();
bitmap.compress(bitmap.CompressFormat.JPEG,100,图像);
builder=ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\u URI);
builder.with selection(contacts contract.Data.CONTACT_ID+“=?”+”和“+contacts contract.Data.MIMETYPE+”=?”,新字符串[]{String.valueOf(ID),contacts contract.commondatatypes.Photo.CONTENT_ITEM_TYPE});
builder.withValue(contacts contract.commonDataTypes.Photo.Photo,image.toByteArray());
ops.add(builder.build());
}
捕获(例外e)
{
e、 printStackTrace();
}
//更新
尝试
{
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}
捕获(例外e)
{
e、 printStackTrace();
}
}
它们是否应该可见?或者联系人应用程序只显示固定的mimetype?这就是我要问的,如何显示自定义mimetype事件。如果你不能,只有在你自己的应用程序中你才能这样做。也许我对类似问题的回答会对你有所帮助:我正在尝试为事件操作显示“自定义字段”,如builder.withValue(contacts contract.Data.mimetype,mimetype);builder.withValue(contacts contract.Data.DATA1,contact.getId());builder.withValue(contacts contract.Data.DATA2,“测试动作”);builder.withValue(contacts contract.Data.DATA3,“测试动作”);如何在联系人应用程序中显示此内容?