Реализация Android AccountManager и SyncManager приводила к тому, что на экране добавления/редактирования контакта отображалось только поле Имя.

Мы внедрили Android Account Manager и Sync Manager API для создания синхронизации контактов. Но когда пользователь выбирает нашу учетную запись при добавлении контакта, отображаются только поля имени, а все остальные поля исчезают.

Вот что у меня есть в моем манифесте

<activity android:name=".AuthenticatorActivity" android:label="iAnywhere Login"
            android:theme="@android:style/Theme.Dialog"
            android:excludeFromRecents="true"></activity>
        <service android:name=".accounts.AuthenticationService">
            <intent-filter>
                <action android:name="android.accounts.AccountAuthenticator"></action>
            </intent-filter>
            <meta-data android:name="android.accounts.AccountAuthenticator"
                android:resource="@xml/authenticator">

            </meta-data>
        </service>

        <service
            android:name=".accounts.SyncService"
            android:exported="true">
            <intent-filter>
                <action
                    android:name="android.content.SyncAdapter" />
            </intent-filter>
            <meta-data
                android:name="android.content.SyncAdapter"
                android:resource="@xml/syncadapter" />
        </service>

Это то, что у меня есть в моих файлах syncadapter.xml и authentication.xml.

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentAuthority="com.android.contacts"
    android:accountType="com.rahul.utility.contacts"
/>

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


person Rahul Choudhary    schedule 10.02.2011    source источник


Ответы (1)


После долгих исследований и изучения базы кода Android я обнаружил, что Android проверяет только тип учетной записи Google или Default для отображения всех полей. Если тип учетной записи относится к любому другому типу, отображаются только два основных поля. Для этого нет никакого обходного пути, кроме создания собственного экрана добавления / редактирования контактов (грустно! Действительно).

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

person Rahul Choudhary    schedule 22.09.2011