Контакты Android - значок настраиваемого поля не отображается в Android 6

Цель

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

Что я уже сделал

Работа с этим руководством: http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/ и несколько других источников, которые я собрал примерно так:

AndroidMainifest.xml:

    <service android:enabled="true" android:exported="true" android:name="com.MySyncAdapterService" android:process=":contacts">
       <intent-filter android:icon="@drawable/icon">
          <action android:name="android.content.SyncAdapter" />
       </intent-filter>
       <meta-data android:name="android.provider.CONTACTS_STRUCTURE" android:resource="@xml/contacts" />
       <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/sync_contacts" />
    </service>

Контакты.xml:

<ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android">
  <ContactsDataKind
    android:icon="@drawable/icon"
    android:smallIcon="@drawable/icon"
    android:mimeType="vnd.android.cursor.item/vnd.my.contact"
    android:summaryColumn="data2"
    android:detailColumn="data3"
    android:detailSocialSummary="true" >
  </ContactsDataKind>
</ContactsAccountType>

Проблема

Как видно на первом изображении, мое пользовательское поле правильно отображается со значком в Android 4.3. К сожалению, Android 6.0.1 отображает мое поле, но без значка.

версия 4.3 6.0.1 версия

Любая помощь будет оценена, у меня кончаются волосы на голове;)


person Szymon Drosdzol    schedule 17.03.2016    source источник


Ответы (1)


Я думаю, что решил свою проблему. Android 6.0, похоже, игнорирует свойство значка ContactsDataKind. Чтобы предоставить значок для настраиваемого поля, вам необходимо предоставить действие, связанное с ним. Он будет использовать значок фильтра намерений, если он предоставлен. Если нет, он будет использовать значок вашего приложения.

<activity android:name=".ContactActivity">
  <intent-filter android:icon="@drawable/icon">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="vnd.android.cursor.item/vnd.my.contact" />
  </intent-filter>
</activity>
person Szymon Drosdzol    schedule 18.03.2016
comment
Эй, я добавил этот фильтр намерений с моим mimeType, и значок все еще не отображается. Любые обновления? Благодарю вас! - person not_again_stackoverflow; 07.09.2016
comment
Вы реализовали реальную деятельность? - person Szymon Drosdzol; 12.09.2016
comment
если под активностью вы подразумеваете что-то похожее на вашу ContactActivity, то да, у меня есть фактическая активность, к которой должно идти намерение. Но значок все еще не отображается на карточке контакта. Данные в summaryColumn и DetailColumn показаны. - person not_again_stackoverflow; 14.09.2016
comment
у меня есть проблема с различиями в зефире"> stackoverflow.com/questions/42851645/ - person Rjz Satvara; 17.03.2017
comment
@SzymonDrosdzol, можете ли вы предоставить исходный код для этого, я делаю то же самое, но даже не смог вызвать метод onperformsync в abstractthreadadapter - person satya prakash; 07.07.2017
comment
Привет, я не могу открыть свое приложение из пользовательского сырья в списке контактов Android. Что я должен указать в своих фильтрах намерений? Помогите мне, пожалуйста - person AndiM; 06.12.2017