1

使用以下代码联系人被添加到 SIM 中,但在重新启动时它会消失。另一个观察结果是 - 如果我们编辑此 SIM 联系人(以编程方式添加),则在重新启动之前,android 的联系人应用程序会崩溃,但联系人会被编辑,并且在重新启动时它仍然不会消失。

在三星以外的设备上,它根本不会在 android 的默认联系人应用程序中显示联系人。但我拉出了联系人数据库并检查了......它包含我以编程方式插入的联系人。我在 LG Optimus 上检查了这个。

任何人都可以帮助我需要考虑的所有其他列或现有列的任何问题。提前致谢。

在三星设备、欧罗巴、S3 上检查了这一点。

private void addSIMContacts() {
    // TODO Auto-generated method stub
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    int rawContactInsertIndex = ops.size();

    ops.add(ContentProviderOperation
            .newInsert(RawContacts.CONTENT_URI)
            .withValue(RawContacts.ACCOUNT_TYPE,
                    new String("vnd.sec.contact.sim"))
            .withValue(RawContacts.ACCOUNT_NAME,
                    new String("vnd.sec.contact.sim"))
            .withValue(RawContacts.SOURCE_ID, new String("1")).build());
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,
                    rawContactInsertIndex)
            .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
            .withValue(Phone.NUMBER, "9X-XXXXXXXXX").build());
    ops.add(ContentProviderOperation
            .newInsert(Data.CONTENT_URI)
            .withValueBackReference(Data.RAW_CONTACT_ID,
                    rawContactInsertIndex)
            .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
            .withValue(StructuredName.DISPLAY_NAME, "om").build());
    try {
        ContentProviderResult[] res = getContentResolver().applyBatch(
                ContactsContract.AUTHORITY, ops);
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (OperationApplicationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
4

1 回答 1

2

请找到随附的代码片段。它适用于大多数情况。

 void insertSIMContact() {
    Uri simUri = Uri.parse("content://icc/adn");

    ContentValues values = new ContentValues();

    String name[] = {"a", "b", "c", "d",};
    int number[] = {1,2,3,4};

    for (int i=0; i<name.length; i++) {
    values.put("tag", name[i]);
                values.put("number", number[i]);
                getContentResolver().insert(simUri, values);
                getContentResolver().notifyChange(simUri, null);
            }
    }
于 2013-07-22T06:18:51.127 回答