在Android中创建与国家/地区代码的联系

时间:2015-05-05 13:54:51

标签: android android-contentprovider android-contacts

将内容提供商的联系人添加前缀为国家/地区代码的数字时,我遇到了一些问题,例如“+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();
        }

这有什么问题吗?

1 个答案:

答案 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(); ?> 变量中使用了我的“+”。