2017-07-17 84 views
0

我尝试添加使用此代码新联系人:添加新联系人(安卓)

try{ 
      ArrayList<ContentProviderOperation> ops = new ArrayList<android.content.ContentProviderOperation>(); 

      if(!name.equals("")) { 
       ops.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()); 
      } 

      if(!number.equals("")){ 
       ops.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, number) 
         .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
         .build()); 
      } 

      if(!email.equals("")){ 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
         .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Email.DATA, email) 
         .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
         .build()); 
      } 

      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } 
    } catch (Exception e) { 
     Toast.makeText(context,e.toString(),Toast.LENGTH_SHORT).show(); 
    } 

我还指定在清单中的WRITE_CONTACTS许可,我要求它在运行时。

然而,尽管它不返回任何错误,不添加联系人...

我在做什么不好?

+1

如果您的Android版本比棒棒糖你需要包括运行时的权限更大。或者您可以授予这样的权限**设置>应用程序>选择您的应用程序>查看权限>切换权限*** –

+0

权限也授予在运行时... –

回答

0

我终于找到了答案。

这是需要尝试存储任何东西之前,包括这个查询:

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
        .build());