2017-07-17 80 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());