Как найти ключ намерения для полей в другом приложении (Попытка добавить дополнительную контактную информацию и не может найти ключ) - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в этом, поэтому, пожалуйста, извините за мой код (внесите предложения, пожалуйста)

Я пытаюсь создать приложение, которое добавляет новый контакт с учетом набора данных и полностью обновляет каждое поле в контакте, которыйимеет отношение к работодателю или работнику.

Я понимаю, что информация может быть получена из намерений, и для ее получения требуется определенный ключ.

Я понимаю, что могу использовать Intents.Intent.NAME и другиеаналогичные константы для ключей для более общих полей.Я заметил, что все эти константы строчные и именно то, что вы ожидаете.Intents.Intent.NAME возвращает «имя».Я читал, что это соглашение, которое соблюдается для программирования Android.

Например, при попытке обновить адрес, я использую Intents.Intent.POSTAL в качестве ключа и строку для адреса, содержащего улицу, город, штат, почтовый индекс и страна в этом порядке.Это обновит всю эту информацию в поле «Улица».

Я пробовал много строк, которые были бы разумными ключами для города, штата и т. Д., И ни одна из них, похоже, не работает.Я также попытался ввести "\ n" между строками улицы, города, штата, почтового индекса и страны, чтобы увидеть, будут ли они автоматически переходить к следующему текстовому полю (в качестве обходного пути).К сожалению, поле «Улица» является многострочным, и оно тоже не работает.

Даже при попытке обновить префиксы и суффиксы для имени человека разумные строки, служащие ключами, не работают.

В целом, у меня возникают проблемы при обновлении следующих полей, поскольку я не знаю их соответствующих ключей:

  • Префикс (часть категории «Имя»)
  • Суффикс (часть категории «Имя»)
  • Веб-адрес («Больше элементов»)
  • Дата / События («Больше элементов»)
  • Город / Штат / Zip/ Страна (категория "Адрес")

Вот мой код в настоящее время, у меня есть его, чтобы применить этот метод к нажатию кнопки.Я предоставил много тестов, чтобы показать мою точку зрения. Я не могу найти ключ, необходимый для обновления этих полей.Если есть какие-либо способы сбора информации о том, где поля проверяют данные при обновлении по намерению, сообщите мне.Если есть другой способ более безошибочно обновить контактную информацию, пожалуйста, дайте мне знать.СПАСИБО за помощь!

Intent insertIntent = new Intent(Intents.Insert.ACTION);
            insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
            insertIntent.putExtra("name", "This T. Works");
            insertIntent.putExtra("name_given", "Thiss");
            insertIntent.putExtra("name_middle", "Doess");
            insertIntent.putExtra("name_family", "Nott");

            // All working properly
            insertIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, "testing@testrun.com");
            insertIntent.putExtra(ContactsContract.Intents.Insert.PHONE, "(098) 765-4321");
            insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, "TEST INC.");
            insertIntent.putExtra(Intents.Insert.SECONDARY_PHONE, "(123) 456-7890");
            insertIntent.putExtra(Intents.Insert.JOB_TITLE, "Tester");
            insertIntent.putExtra(Intents.Insert.IM_HANDLE, "@tester");

            // Not working at all... No "City" constant
            insertIntent.putExtra("postal_city", "Testopolis1");
            insertIntent.putExtra("city", "Testopolis2");
            insertIntent.putExtra("City", "Testopolis3");

            // Not working at all... No "State" constant
            insertIntent.putExtra("postal_state", "Testopolis1");
            insertIntent.putExtra("state", "Testopolis2");
            insertIntent.putExtra("State", "Testopolis3");

            // Not working at all... No "Zip" constant
            insertIntent.putExtra("zip", "12345");
            insertIntent.putExtra("ZIP", "11231");
            insertIntent.putExtra("Zip", "12134");
            insertIntent.putExtra("zipcode", "12314");
            insertIntent.putExtra("zip_code", "12341");
            insertIntent.putExtra("zipCode", "12434");
            insertIntent.putExtra("postal_code", "14234");
            insertIntent.putExtra("post_code", "11234");
            insertIntent.putExtra("postCode", "12234");
            insertIntent.putExtra("postalCode", "12334");
            insertIntent.putExtra("postalcode", "12344");

            // The "Postal" constant that puts everything into the "Street" field
            insertIntent.putExtra(ContactsContract.Intents.Insert.POSTAL, "1234 TestRun Drive\n Testopolis5\n Testerland\n 55421\n USA");
            startActivity(insertIntent);

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете создать класс данных, который реализует интерфейс Parcelable . После этого Вы можете перемещать целые объекты из одного занятия в другое, сохраняя все методы и способности класса.

Например,

Сначала создайте класс данных, который реализует Parcelable.

public class Property implements Parcelable {
  ...
}

Внутри первого упражнения создайте объект намерения и используйте метод putExtra, чтобы добавить весь класс как дополнительный.

Intent intent = new Intent(MainActivity.this, DetailActivity.class);
intent.putExtra("Property", property);
startActivity(intent);

Теперь, когда вы во втором упражнении, вам нужно собрать объект intent и извлечь класс свойств, который был преобразован в parcel.

//collect our intent
Intent intent = getIntent();
Property property = intent.getParcelableExtra("Property");

Учебное пособие по оформлению заказа Передача данных между операциями с Android Parcelable для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...