首页 文章

将联系人添加到SIM卡

提问于
浏览
0

我正在尝试将联系人添加到SIM卡,它们似乎被添加到SIM卡中,但只有在重启设备后才能看到它们(甚至是原生人民应用程序) .

这是我正在使用的代码:

final Uri uri = Uri.parse("content://icc/adn");
ContentValues mContentValue = new ContentValues();
mContentValue.put("tag", contactName);
mContentValue.put("number", contactNumber);
getContentResolver().insert(uri, mContentValue);

在创建联系人后同步联系人db是一个问题吗?如果是这样,有没有办法,可能是,强制Android将联系人的数据库与SIM卡同步?


EDIT

好的,让我再解释一下我的问题 . 这是男人,有同样的问题,但没有任何答案(when adding contacts to sim card, they are only displayed after rebooting the device),所以我需要再问一次 .
ACCOUNT_TYPE: com.android.contacts.simACCOUNT_NAME: SIM 对我的手机有误 . 我从 ContactsContract.Settings.CONTENT_URI 开始:com.android.huawei.phone - 电话和com.android.huawei.sim - sim1 . 这是我的代码:

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

Uri simUri = Uri.parse("content://icc/adn");
ContentValues values = new ContentValues();
values.put("tag", "NAME");
values.put("number", "77777777777");
try {
    Uri uri =  context.getContentResolver().insert(simUri, values);

    int efid = 0,index = 0;
    Pattern pattern = Pattern.compile("^content://icc/adn/(\\d+)/(\\d+)$*");
    Matcher matcher = pattern.matcher(uri.toString());
    if(matcher.matches()) {
        index = Integer.parseInt(matcher.group(1));
        efid = Integer.parseInt(matcher.group(2));
    }

    ArrayAdapterSpinner.Item item = adapter.getItem(spinner.getSelectedItemPosition());

    op.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.android.huawei.sim")
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "sim1")
            .withValue(ContactsContract.RawContacts.SYNC1,efid)
            .withValue(ContactsContract.RawContacts.SYNC2,index)
            .build());
    op.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "NAME")
            .build());
    op.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "77777777777")
            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
            .build());

    try {
        ContentProviderResult[] cprs = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, op);
    } catch (Exception e) {
        Log.e("ERROR", e.getMessage());
    }
} catch(Exception e) {
    Log.e("ERROR2", e.toString());
}

但结果是:
1.创建icc / adn中的联系人
2.创建RawContacts中的联系人,但用com.android.huawei.phone替换 ACCOUNT_TYPEACCOUNT_NAME - 电话

1 回答

  • 0

    也许它可以帮助

    try{
                    // add a row to the RawContacts table
             ContentValues values = new ContentValues();
             values.put(RawContacts.ACCOUNT_TYPE, "com.android.contacts.sim");
             values.put(RawContacts.ACCOUNT_NAME, "SIM");
             Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
    
            // get the ID of the newly-added line
     long rawContactId = ContentUris.parseId(rawContactUri);
    
            // add a "name" line to the Data table, linking it to the new RawContact
            // with the CONTACT_ID column
     values.clear();
     values.put(Data.RAW_CONTACT_ID, rawContactId);
     values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
     values.put(StructuredName.DISPLAY_NAME, "Name");
     cr.insert(Data.CONTENT_URI, values);
      getContentResolver().notifyChange(Uri_Here,null); 
            // add a "phone" line to the Data table, linking it to the new RawContact
            // with the CONTACT_ID column
     values.clear();
     values.put(Data.RAW_CONTACT_ID, rawContactId);
     values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
     values.put(Phone.NUMBER, "+12345678901");
     values.put(Phone.TYPE, Phone.TYPE_MOBILE);
     cr.insert(Data.CONTENT_URI, values);
    getContentResolver().notifyChange(Uri_Here,null); 
    //New Edit
    }
    catch(Exception e){
        //exception handling
    }
    

相关问题