Я пробовал разные способы, но ни один из них не увенчался успехом.
-
Чтобы отредактировать контакт, я использовал команду
и это сработало.Код: Выделить всё
am start -a android.intent.action.EDIT content://contacts/people/8
Но удалив его с помощью
не работает и показало следующее сообщение об ошибке:Код: Выделить всё
am start -a android.intent.action.DELETE content://contacts/people/8
Действие не запущено, невозможно разрешить намерение { act=android.intent.action.DELETE dat=content://contacts/people/8 flg=0x10000000
(flg=0x10000000 означает FLAG_RECEIVER_FOREGROUND, я думаю, что он устанавливается автоматически.)
Нужно ли мне устанавливать какие-то флаги? Или почему это не работает? - Более навороченный способ — смоделировать процесс, как обычный пользователь удаляет контакт.
После нажатия на кнопку «Удалить» постоянно вылетает приложение контактов (Контакты были закрыты). Использование этих ключевых событий никогда не работало на моем эмуляторе — если я нажимаю на кнопки вручную (мышью), все работает…Код: Выделить всё
am start -a android.intent.action.VIEW content://contacts/people/8 input keyevent 22 # right button input keyevent 22 # reach field in the right corner input keyevent 66 # enter input keyevent 20 # go down input keyevent 20 # go down --> reached "Delete" input keyevent 66 # enter input keyevent 22 # button "Ok" input keyevent 66 # enter - Третий способ — удаление записей в базах данных. Для меня это не имеет смысла, потому что тогда они полностью удаляются -- если их удалить "обычным" способом, контакты все равно сохраняются в некоторых таблицах (например, "удаленные контакты").
Подробнее здесь: https://stackoverflow.com/questions/236 ... ct-via-adb