我正在尝试更新与 SIM 上的联系人关联的电话号码。我可以更新数据表的行,但更改不会传播到 SIM。更新后我将数据行转储出去;_ID 仍然相同,电话 (data1) col 有新的电话号码。当我重新启动手机时,该条目具有旧值。联系人的原始联系人号码已增加 1。关于如何使更改在 SIM 中持久存在的任何想法?(是的,我知道有些文档说不支持访问 SIM。但通讯录应用程序可以做到这一点 - 应用程序必须有一种方法来更新 SIM 卡。)可能有拼写错误 - 我必须(重新)输入在这里手动编码。
这是我用来更新行的代码。
String rawId = "87"; // provided by caller; hardcoded here for brevity
String num = "212-222-3333"; // new phone #
ContentResolver cr = ...get actvity's resolver...
Uri uri = ContactsContract.Data.CONTENT_URI;
ContentValues cv = new ContentValues();
cv.put(ContactsContract.CommonDataKinds.Phone.Number, num);
String select = ContactsContract.Data.RAW_CONTACT_ID " + " = " + rawId + " and " +
ContactsContract.Data.MIMETYPE + " = '" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_ITEM + "'";
String[] selectArgs = {};
cr.update(uri, cv, select, selectArgs);
捕获异常和其他细节省略。
感谢您提供任何线索!