将内容提供商的联系人添加前缀为国家/地区代码的数字时,我遇到了一些问题,例如“+48515000111”。添加这种数字会导致我的联系人号码为“48515000111”,因此删除了“+”字符。
这是我添加联系人的方式:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME, null).build());
//Phone Number
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,
rawContactInsertIndex)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, number)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.TYPE, "1").build());
//Display name/Contact name
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID,
rawContactInsertIndex)
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.DISPLAY_NAME, name)
.build());
try {
ctx.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
return "ok";
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "error:"+e.getClass().getName()+":"+e.getMessage();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "error:"+e.getClass().getName()+":"+e.getMessage();
}
这有什么问题吗?
答案 0 :(得分:0)
问题出在其他地方。上面粘贴的代码没问题,但联系信息是通过GCM以JSON格式发送的。似乎将通过GCM发送的JSON字符串中的“+”替换为空格。在放入JSON之前我必须对电话号码进行URL编码,现在我在<?php get_header(); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<article>
<header><h1><?php the_title();?></h1></header>
<?php the_content(); ?>
</article>
<?php endwhile; ?>
<?php endif; ?>
<?php get_footer(); ?>
变量中使用了我的“+”。