0

私は特定の連絡先(contactIdによって)をプログラムによって表示名に変更しようとしています。 私は似たQ &にここを見て、次のことを試してみた:連絡先の名前をプログラムで変更します。

public static boolean updateContactName(Context context, long contactId, String newName) { 
    try { 
     ContentResolver contentResolver = context.getContentResolver(); 

     ArrayList<android.content.ContentProviderOperation> ops = new ArrayList<>(); 
     ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Data.CONTENT_URI) 
       .withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " + 
           Data.MIMETYPE + "='" + 
           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'", 
         new String[]{Long.toString(contactId)}) 
       .withValue(CommonDataKinds.StructuredName.DISPLAY_NAME, newName) 
       .build()); 

     contentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 
     return true; 
    } catch (Exception e) { 
     CLog.d(ContactUtils.class, e); 
     return false; 
    } 
} 

それはそれは働いていない(このようなLGのG3のような)一部のデバイスではなく、他に働いて、何も更新されません。

ありがとうございました!

答えて

0

それをチェックアウトしてください:

try { 
    String newName = txtName.getText(); 
    ArrayList<ContentProviderOperation> cpoList = new ArrayList<ContentProviderOperation>(); 

    cpoList.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
    .withSelection(ContactsContract.CommonDataKinds.Phone._ID + "=? AND " + 
      Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'", new String[]{contact_id}) 
    .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, newName) 
    .build()); 
    ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, cpoList); 
} catch (Exception e) { 
    // Do Any thing 
} 
+0

それは同じコードです。 – motis10

+0

同じコード。 lgで作業していないg3 –

+0

エラーログを確認しましたか? – AndroSco

関連する問題