android以编程方式编辑联系人

Posted

技术标签:

【中文标题】android以编程方式编辑联系人【英文标题】:android Editing contact programmatically 【发布时间】:2016-12-26 03:39:03 【问题描述】:

我正在尝试以编程方式编辑联系方式。我想更改电话号码等于 123 的联系人姓名。这是我的非工作代码。

Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode("123"));

        // This query will return NAME and ID of contact, associated with phone //number.

        Cursor mcursor = getContentResolver().query(lookupUri, new String[]ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID, null, null, null);

        //Now retrive _ID from query result
        long idPhone = 0;
        try 
            if (mcursor != null) 
                if (mcursor.moveToFirst()) 
                    idPhone = Long.valueOf(mcursor.getString(mcursor.getColumnIndex(ContactsContract.PhoneLookup._ID)));
                    String getID = String.valueOf(idPhone);
                    Toast.makeText(this.getApplicationContext(), getID, Toast.LENGTH_LONG).show();
                    Uri uri= ContentUris.withAppendedId(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,3625);
                    ContentValues values = new ContentValues();
                    values.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,"After Changed name");
                    getContentResolver().update(uri, values, ContactsContract.CommonDataKinds.Phone._ID+"=?", new String[] String.valueOf(idPhone));

                
            
         finally 
            mcursor.close();
        

目前我正在查找电话号码并获取电话号码的 ID。使用 ID 我正在尝试更新它,似乎它没有用 ID 更新电话号码。

【问题讨论】:

【参考方案1】:

这是我的工作代码。

 public void updateContact (String contactId, String newNumber, Activity act) throws RemoteException, OperationApplicationException

    //ASSERT: @contactId alreay has a work phone number 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    String selectPhone = Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "='"  + 
                    Phone.CONTENT_ITEM_TYPE + "'" + " AND " + Phone.TYPE + "=?";
    String[] phoneArgs = new String[]contactId, String.valueOf(Phone.TYPE_WORK); 
    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
            .withSelection(selectPhone, phoneArgs)
            .withValue(Phone.NUMBER, newNumber)
            .build()); 
    act.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);



 //hope this also work for you.

【讨论】:

我已经有电话号码了。我想从给定的电话号码更改联系人姓名。 将联系人号码作为参数传递给contactId 好吧,它对我有用,你可以在这里查看 github 示例。 github.com/gwoodhouse/ContactContractSample/blob/master/… 你也可以查看这个答案***.com/questions/9907751/android-update-a-contact 我不明白联系人 ID 和原始联系人 ID 之间的区别。你能修改你的代码吗?你给我的链接很难理解。

以上是关于android以编程方式编辑联系人的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式编辑联系人的姓名/电话号码

以编程方式编辑 iOS 联系人 [关闭]

以编程方式获取 android 联系人显示选项

以编程方式保存照片联系人 - Android

以编程方式批量添加数千个 Android 联系人

以编程方式阅读 Android 中的 Sim 联系人?