将联系人添加到SIM卡
问题描述:
我试图添加联系人到SIM卡,他们似乎被添加到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卡同步?
编辑
好吧,我还是想说明我的问题。这里是人,有同样的问题,但没有任何答案(when adding contacts to sim card, they are only displayed after rebooting the device),所以我需要再问一次。
ACCOUNT_TYPE:com.android.contacts.sim和ACCOUNT_NAME:SIM对我的手机有误。我从得到正确的联系方式.Contract.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联系被创建,但ACCOUNT_TYPE和 ACCOUNT_NAME被替换为com.android.huawei.phone - 电话
答
Ma ybe它可以帮助
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
}
Erhm ...我的错误。我已经重新解释了我的问题。检查我的编辑 –
检查我新编辑.... getContentResolver()。notifyChange(simUri,null);添加这个,以便它立即出现。 – Sahil
它似乎没有工作......我添加了“icc/adn”的联系方式并通知了“icc/adn”uri的更改。结果:联系人已添加到“icc/adn”,但未显示在设备存储中。 –