Вы можете ссылаться только на ресурсы Azure, используя функцию reference()
, а не на объекты Azure AD. это невозможно. Вы должны сделать это вне шаблона и передать отображаемое имя в шаблон.
Я думаю, что ответ Sharptooth точен. Раздел 12.3.4 стандарта C ++ (SC22-N-4411.pdf), озаглавленный «Преобразования», поясняет, что разрешено только одно неявное определяемое пользователем преобразование.
1 Преобразования типов объектов класса могут быть указаны с помощью конструкторы и преобразованием функции. Эти преобразования называются пользовательскими преобразованиями и используются для неявных преобразований типов (пункт 4), для инициализация (8.5), а для явных преобразований типов (5.4, 5.2.9).
2 Пользовательские преобразования применяются только там, где они однозначно (10.2, 12.3.2). Преобразования подчиняются правила контроля доступа (п.11). Контроль доступа применяется после разрешение неоднозначности (3.4).
3 [Примечание: См. 13.3 для обсуждения использования преобразований в вызовах функций, а также в примерах ниже. -конец note]
4 Не более одного определяемого пользователем преобразования (конструктор или преобразование функция) неявно применяется к не замужем Я не уверен на 100%, что должен делать ваш пример кода, но следующий фрагмент должен помочь вам «вызвать функцию списка контактов, выбрать контакт, а затем вернуться в [ваше] приложение с именем контакта».
три шага к этому процессу.
1. Разрешения
Добавьте разрешение на чтение данных контактов в манифест приложения.
<uses-permission android:name="android.permission.READ_CONTACTS"/>
2. Вызов средства выбора контактов
. В рамках действия создайте намерение, которое просит систему найти действие, которое может выполнить действие ВЫБОР из элементов в URI контактов.
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
Вызов
startActivityForResult
, передавая это намерение (и целое число кода запроса,PICK_CONTACT
в этом примере). Это заставит Android запустить действие, зарегистрированное для поддержкиACTION_PICK
наPeople.CONTENT_URI
, затем вернитесь к этому действию, когда выбор будет сделан (или отменен).startActivityForResult(intent, PICK_CONTACT);
3. Прослушивание результата
Также в своем действии переопределите метод
onActivityResult
для прослушивания возврата от действия «выбор контакта», которое вы запустили на шаге 2. Вы должны убедиться, что возвращенный код запроса соответствует ожидаемое значение и код результатаRESULT_OK
.Вы можете получить URI выбранного контакта, вызвав
getData ()
для данных Параметр намерения. Чтобы получить имя выбранного контакта, вам необходимо использовать этот URI для создания нового запроса и извлечения имени из возвращенного курсора.@Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); switch (reqCode) { case (PICK_CONTACT) : if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = getContentResolver().query(contactData, null, null, null, null); if (c.moveToFirst()) { String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); // TODO Whatever you want to do with the selected contact name. } } break; } }
Полный исходный код: tutorials-android.blogspot.com (как вызвать android список контактов) .
При поиске решения API уровня 5 с использованием API ContactsContract вы можете немного изменить код выше следующим образом:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
Затем в onActivityResult используйте имя столбца:
ContactsContract.Contacts.DISPLAY_NAME