7

我想修改聯繫人程序的顯示名稱:編輯姓名/電話號碼編程

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

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

     ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (Exception e) { 
     Log.w("UpdateContact", e.getMessage()+""); 
     for(StackTraceElement ste : e.getStackTrace()) { 
      Log.w("UpdateContact", "\t" + ste.toString()); 
     } 
     Context ctx = getApplicationContext(); 
     int duration = Toast.LENGTH_SHORT; 
     Toast toast = Toast.makeText(ctx, "Update failed", duration); 
     toast.show(); 
    } 

contact_idContactsContract.CommonDataKinds.Phone._ID聚集在以前的活動

代碼執行正常,但:

  • ContentProviderResult[]結果爲空
  • 聯繫人姓名保持不變編號

我也試過Data.DISPLAY_NAME,但效果相同。

我閱讀手冊:http://developer.android.com/guide/topics/providers/contacts-provider.html但我不想調用本地意圖。

謝謝。

+0

真的嗎?沒人能幫忙? – androfan

回答

5

您應該在您的選擇中指定mimetype。

.withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " + 
       Data.MIMETYPE + "='" + 
       ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'", 
       new String[]{contact_id}) 

如果你還沒有弄清楚這一點,那就去吧。我發現更新聯繫人對於正確選擇參數非常棘手。

+0

我前段時間已經想通了,這是線索。不管怎麼說,還是要謝謝你 ;)。 – androfan

+0

@androfan如果您找到答案,請發佈完整的代碼。謝謝 :) –

相關問題