我想在android中创建一个函数来编辑通讯录中的每个数字,但我找到的所有示例都只编辑1个联系人,所以如果联系人的号码超过1个,就不会编辑。
例如:
Amy有这样的号码:
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();
}
谨致问候。
在程序的其他地方,您正在读取电话号码。在那个位置,还要读取类型,并将其作为参数传递给updateContact
。