2015-02-18 1 views
2

Прежде всего, спасибо за помощь. Я ежедневно использую stackoverflow для решения почти каждой проблемы с кодом, которую я имею, это блестящая платформа с блестящими людьми.Специальный случай при добавлении пользовательского соединения/действия для контактов в Android KitKat 4.4.2

К моей проблеме:

Моей первоначальная цель состояла в том, чтобы добавить пользовательское соединение (кнопка действия) к контактам на Android, с помощью пользовательских действий для выполнения в моем приложении (Пример: Позвоните с моим приложением). Я уже успел получить, что сделано с счетов и провайдеров синхронизации в большинстве устройств благодаря занимаемым должностям, как этот, будучи мой код похож на ответ Рене Ummels и c99.org учебник:

Display the app icon if the contact is associated with the application in phone address book

Действие отлично работает в трех тестовых устройствах с Android 4.0.4, 4.3.1 и 4.4.3 и появляется примерно так: enter image description here

Проблема в том, что из моих тестовых устройств есть один, в котором он не работает, т работы. Детали устройства (вверх) и что не работают (вниз):

enter image description here

В принципе, мне кажется, как эта версия Android (4.4.2) имеет другой способ иметь дело с соединениями.

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

Мой вопрос: Как активировать эту кнопку «Пользовательское приложение», чтобы начать мою деятельность, как предусмотрено на этом устройстве?

У кого-то была такая же проблема? Я не нашел ничего подобного при поиске в Интернете.

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

ответ

0

Решено.

Насколько я знаю, проблема заключалась в соглашении об именах.

Соответствующий бит был в моем ContactsSyncAdapter, в той части, которая выглядела так:

builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
     builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
     builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/com.example.precall.contact_activity"); 

Все, что я должен был сделать, это изменить это имя «contact_activity», который был макет, я хотел, чтобы получить доступ с , в «профиль», а затем переименуйте файл contact_activity.xml, который я создал для profile.xml. Это выглядит примерно так:

builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); 
     builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
     builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/com.example.precall.profile"); 

(Тогда, конечно, я должен был изменить манифест, чтобы приспособить это изменение)

Насколько я знаю, и если я не совершенно неправильно о причине, это которое не отображается в документации, просто предполагается, что он должен быть назван так.

Мне кажется довольно дешевым и жестким, чтобы в этом конкретном случае вы должны назвать свой .xml определенным образом, иначе это не будет кнопкой в ​​KitKat, просто мертвое изображение.

В любом случае, я надеюсь, что это поможет кому-то, если они придут к той же неприятной проблеме.

: D