Я пытаюсь написать один контакт на SIM-карту.Android - Создать новый контакт с SIM-картой
Я отсканировал эти вопросы до сих пор: this,this,this,and this.
Я получил источник this nice library, но все же, я не вижу, экспортированные контакты из приложений. И что еще хуже, я заполнил одну из своих сим-карт без какой-либо возможности немного ее очистить, поэтому мне пришлось получить еще один.
Ничего не помогло.
Вот мой код:
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());
}
}
В случае simUri равной Uri.parse ("Содержание: // МЦХ/ADN") сбой приложения с UnsupportedOperationException,
В случае simUri, равный контакту RawContacts.CONTENT_URI, написан в таблице RawCts, и он помечен как контакт от sim, но после перезагрузки я не вижу контакта нигде. Кажется, что он не был написан прямо на SIM-карте.
Значения SIM_ACCOUNT_TYPE/NAME отражают ту же самую пару типа/имя учетной записи cts, экспортированную системным приложением.
Манифест приложения содержит оба разрешения: READ и WRITE _CONTACTS
Пожалуйста, помогите. Какой код следует использовать для правильного написания контакта на SIM-карте?
Спасибо всем, кто отвечает.
Здравствуйте. Вы решили свою проблему? –
@UnknownJoe проверить мой ответ – moDev