2014-02-17 25 views
0

我寫的更新方法更新聯繫人,但我對我的手機沒有運行此之後發生 並沒有取得聯繫,更新,爲什麼?爲什麼更新聯繫人方法無助於Android的

這是我的方法:

public Boolean UpdateContacts(ArrayList<ContactInfo> encryptedContactsInfoList) { 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ContentResolver cr = null; 
    for (ContactInfo contactInfo : encryptedContactsInfoList) { 

     try { 


      String contactId = contactInfo.getContactID(); 
      String contactName = contactInfo.getContactName(); 
      String contactNumber = contactInfo.getContactNumber(); 


      ops.add(ContentProviderOperation 
        .newUpdate(Data.CONTENT_URI) 
        .withSelection(
          ContactsContract.CommonDataKinds.Phone._ID 
            + " = ?", new String[] { contactId }) 
        .withValue(ContactsContract.Data.DISPLAY_NAME, 
          "asdffgh").build()); 

       cr.applyBatch(ContactsContract.AUTHORITY, ops); 



     } catch (Exception e) { 

      Log.d("exception", e.getMessage()); 
     } 

    } 
    return true; 
} 

這是執行的代碼後OPS:

[{"mSelection":"_id \u003d ?","mSelectionArgs":["2302"],"mUri":{"authority":  


{"decoded":"com.android.contacts","encoded":"com.android.contacts"},"fragment":{},"path": 


{"decoded":"NOT CACHED","encoded":"/data"},"query":{},"scheme":"content","uriString":"NOT 


CACHED","host":"NOT CACHED","port":-2},"mValues":{"mValues":  


{"display_name":"asdffgh"}},"mType":2,"mYieldAllowed":false}] 

任何幫助真的很感謝,

最誠摯的問候。

回答

1

你什麼也得不到,因爲你ContentResolver爲空,所以你在每次迭代異常。

您的應用程序不會崩潰,因爲你有catch (Exception e),捕捉每一個例外。

嘗試:

ContentResolver cr = getContentResolver(); 

此外,applyBatch呼後應的for循環,否則,你的每一項處理。第多少次,並改變ContactsContract.CommonDataKinds.Phone._IDContactsContract.Data._ID

try { 


    for (ContactInfo contactInfo : encryptedContactsInfoList) { 

     String contactId = contactInfo.getContactID(); 
     String contactName = contactInfo.getContactName(); 
     String contactNumber = contactInfo.getContactNumber(); 


     ops.add(ContentProviderOperation 
       .newUpdate(Data.CONTENT_URI) 
       .withSelection(
         ContactsContract.Data._ID 
           + " = ?", new String[] { contactId }) 
       .withValue(ContactsContract.Data.DISPLAY_NAME, 
         "asdffgh").build()); 
    } 

    cr.applyBatch(ContactsContract.AUTHORITY, ops); 


    } catch (Exception e) { 

     Log.d("exception", e.getMessage()); 
    } 
+0

感謝您的回覆但我該如何處理呢?我該怎麼做呢? –

+0

我做了你所說的,但沒有再發生。 –

+0

@ user3026622打開logcat並查找異常文本。你會得到錯誤的信息。如果你不明白,貼在問題logcat的文本 –