在Android中为每个电话号码添加1位数字

时间:2012-09-19 17:54:12

标签: java android sqlite cursor contactscontract

我想创建一个函数来编辑android中地址簿中的每个数字,但是我发现的所有示例只编辑了1个联系人,所以如果联系人的号码超过1,则不会编辑

例如:

艾米有这个数字:

093456432 - cellphone
2345678 - house
6789504 - work
34567832 - other

该应用程序将在第二个位置添加1个数字,例如“8”,因此更改将导致类似:

0893456432 - cellphone
28345678 - house
68789504 - work
384567832 - other

这需要在我的地址簿中为每个联系人发生。

已经尝试过这样的事情(烧掉一个数字来替换原来的数字只是为了测试),但只编辑TYPE_HOME这是电话号码,我想知道我怎么能这样做,如果有一个全局的TYPE我可以在其中编辑任意数量的联系人:

private void updateContact(String name, String phone)
{
    ContentResolver cr = getContentResolver();

    String where =
        ContactsContract.Data.DISPLAY_NAME + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ? AND "
            + String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE) + " = ? ";
    String[] params =
        new String[]
        {
            name,
            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE,
            String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_HOME) };

    Cursor phoneCur = managedQuery(ContactsContract.Data.CONTENT_URI, null, where, params, null);

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

    ops.add(ContentProviderOperation
        .newUpdate(ContactsContract.Data.CONTENT_URI)
        .withSelection(where, params)
        .withValue(ContactsContract.CommonDataKinds.Phone.DATA, phone)
        .build());

    phoneCur.close();

    try
    {
        cr.applyBatch(ContactsContract.AUTHORITY, ops);
    }
    catch (RemoteException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (OperationApplicationException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Toast.makeText(NativeContentProvider.this, "The number of have been updated " + name+ " to: " + phone,
    // Toast.LENGTH_SHORT).show();
}

问候。

1 个答案:

答案 0 :(得分:0)

您计划的其他地方,您正在阅读电话号码。在该位置,还要读取类型,并将其作为参数传递给updateContact