Android-创建新的SIM卡联系人

Android-创建新的SIM卡联系人,android,android-contacts,contact,telephony,contactscontract,Android,Android Contacts,Contact,Telephony,Contactscontract,我正在尝试将一个联系人写入SIM卡 到目前为止,我已经浏览了这些问题: 我已经获得了的来源,但仍然没有看到从应用程序导出的联系人。更糟糕的是,我已经把我的一张sim卡塞满了,根本不可能把它清理干净,所以我不得不再买一张 没有任何帮助 这是我的密码: Uri simUri = Uri.parse("content://icc/adn"); OR RawContacts.CONTENT_URI; SIM_ACCOUNT_NAME = "vnd.sec.contact.sim"; SIM_ACCO

我正在尝试将一个联系人写入SIM卡

到目前为止,我已经浏览了这些问题:

我已经获得了的来源,但仍然没有看到从应用程序导出的联系人。更糟糕的是,我已经把我的一张sim卡塞满了,根本不可能把它清理干净,所以我不得不再买一张

没有任何帮助

这是我的密码:

Uri simUri = Uri.parse("content://icc/adn");
OR RawContacts.CONTENT_URI;

SIM_ACCOUNT_NAME = "vnd.sec.contact.sim";
SIM_ACCOUNT_TYPE = "vnd.sec.contact.sim";



public static final void exportToSim(Context context,
            List<Contact> listContacts) {
        ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();

        for (Contact contact : listContacts) {
            if (contact.getPhones() == null)
                continue;
            if (contact.getPhones().isEmpty())
                continue;
            /* Create empty contact */
            int backReference = operations.size();
            operations.add(ContentProviderOperation.newInsert(simUri)
                    .withValue(RawContacts.ACCOUNT_TYPE, SIM_ACCOUNT_TYPE)
                    .withValue(RawContacts.ACCOUNT_NAME, SIM_ACCOUNT_NAME)
                    .build());
            /* Add name Data */
            operations
                    .add(ContentProviderOperation
                            .newInsert(DATA_URI)
                            .withValueBackReference(Data.RAW_CONTACT_ID,
                                    backReference)
                            .withValue(Data.MIMETYPE,
                                    StructuredName.CONTENT_ITEM_TYPE)
                            .withValue(StructuredName.DISPLAY_NAME,
                                    contact.displayName).build());
            /* Add phone data */
            for (Phone phone : contact.getPhones()) {
                operations.add(ContentProviderOperation
                        .newInsert(DATA_URI)
                        .withValueBackReference(Data.RAW_CONTACT_ID,
                                backReference)
                        .withValue(Data.MIMETYPE,
                                CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                        .withValue(CommonDataKinds.Phone.NUMBER, phone.number)
                        .withValue(CommonDataKinds.Phone.TYPE,
                                CommonDataKinds.Phone.TYPE_MOBILE).build());
            }
        }

        try {
            context.getContentResolver().applyBatch(ContactsContract.AUTHORITY,
                    operations);
        } catch (RemoteException e) {
            Log.e(e.getClass().getSimpleName(), e.getMessage());
        } catch (OperationApplicationException e) {
            Log.e(e.getClass().getSimpleName(), e.getMessage());
        }
    }
urisimuri=Uri.parse(“content://icc/adn");
或rawscontacts.CONTENT_URI;
SIM_ACCOUNT_NAME=“vnd.sec.contact.SIM”;
SIM_账户类型=“vnd.sec.contact.SIM”;
公共静态最终无效exportToSim(上下文,
列表(联系人){
ArrayList操作=新建ArrayList();
用于(联系人:listContacts){
if(contact.getPhones()==null)
继续;
if(contact.getPhones().isEmpty())
继续;
/*创建空联系人*/
int backReference=operations.size();
add(ContentProviderOperation.newInsert(simUri)
.withValue(RawContacts.ACCOUNT\u类型、SIM\u ACCOUNT\u类型)
.withValue(RawContacts.ACCOUNT\u NAME、SIM\u ACCOUNT\u NAME)
.build());
/*添加名称数据*/
操作
.add(ContentProviderOperation
.newInsert(数据\u URI)
.带ValueBackReference(Data.RAW\u CONTACT\u ID,
反向参考)
.withValue(Data.MIMETYPE,
StructuredName.CONTENT\u ITEM\u TYPE)
.withValue(StructuredName.DISPLAY\u NAME,
contact.displayName.build());
/*添加电话数据*/
对于(电话:contact.getPhones()){
添加(ContentProviderOperation
.newInsert(数据\u URI)
.带ValueBackReference(Data.RAW\u CONTACT\u ID,
反向参考)
.withValue(Data.MIMETYPE,
CommonDataTypes.Phone.CONTENT\u ITEM\u TYPE)
.withValue(CommonDataTypes.Phone.NUMBER,Phone.NUMBER)
.withValue(CommonDataTypes.Phone.TYPE,
commonDataTypes.Phone.TYPE_MOBILE.build());
}
}
试一试{
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY,
业务);
}捕获(远程异常){
Log.e(e.getClass().getSimpleName(),e.getMessage());
}捕获(操作应用程序异常e){
Log.e(e.getClass().getSimpleName(),e.getMessage());
}
}
如果simUri等于Uri.parse(“content://icc/adn)应用程序因不支持操作异常而崩溃

在simUri等于RawContacts.CONTENT_URI的情况下,contact写入RawCts表中,并标记为contact from sim,但在重新加载后,我在任何地方都看不到联系人。看起来,它不是直接写在SIM卡上的

SIM_账户类型/名称的值反映了由系统应用程序导出的cts中相同的账户类型/名称对

应用程序的清单包含两种权限:读取和写入联系人

请帮忙。我应该使用什么代码将联系人正确写入SIM卡


感谢所有回复。

使用以下代码创建新的sim卡联系人

void insertSIMContact() {

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

ContentValues values = new ContentValues();
values.put("tag","Mitesh");
values.put("number", "1234");

getContentResolver().insert(simUri, values);
getContentResolver().notifyChange(simUri, null);

}

使用以下代码创建新的sim卡联系人

void insertSIMContact() {

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

ContentValues values = new ContentValues();
values.put("tag","Mitesh");
values.put("number", "1234");

getContentResolver().insert(simUri, values);
getContentResolver().notifyChange(simUri, null);

}

你好你解决问题了吗?@UnknownJoe检查我的答案你好。你解决问题了吗?@UnknownJoe检查我的答案