Как определить ContactsAccountType для сервера, такого как Exchange, чтобы позволить пользователю редактировать в собственном приложении контактов, используя syncadapters - PullRequest
0 голосов
/ 13 июня 2019

Я использую SyncAdapter, который синхронизирует данные с сервера Microsoft Exchange с собственным контактом устройства. Однако обмен имеет некоторые ограничения на DataKinds , например, разрешено только 3 идентификатора электронной почты для каждого типа Home, Work, Mobile и т. Д. Аналогично для других предопределенных MimeTypes. Я хочу, чтобы приложение родных контактов учитывало это при редактировании / создании нового контакта. Я добавил метаданные в мои syncadapter.xml

 <meta-data android:name="android.provider.CONTACTS_STRUCTURE"
                android:resource="@xml/contacts"/>

Я определил EditSchema в contacts.xml, как показано ниже:

<ContactsAccountType
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <EditSchema
        >
        <DataKind kind="name"
            maxOccurs="1"
            supportsDisplayName="true"
            supportsPrefix="true"
            supportsMiddleName="true"
            supportsSuffix="true"
            supportsPhoneticFamilyName="true"
            supportsPhoneticMiddleName="true"
            supportsPhoneticGivenName="true"
            >
        </DataKind>
        <DataKind kind="photo" maxOccurs="1" />
        <DataKind kind="phone" maxOccurs="3">
            <Type type="mobile" />
            <Type type="home" />
            <Type type="work" />
            <Type type="fax_work" />
            <Type type="fax_home" />
            <Type type="pager" />
            <Type type="other" />
            <Type type="custom"/>
            <Type type="callback" />
            <Type type="car" />
        </DataKind>
        <DataKind kind="email" maxOccurs="3">
            <Type type="home" />
            <Type type="work" />
            <Type type="other" />
            <Type type="mobile" />
        </DataKind>
        <DataKind kind="nickname" maxOccurs="1" />
        <DataKind kind="im" >
            <Type type="aim" />
            <Type type="msn" />
            <Type type="yahoo" />
            <Type type="skype" />
            <Type type="qq" />
            <Type type="google_talk" />
            <Type type="icq" />
            <Type type="jabber" />
            <Type type="custom" />
        </DataKind>
        <DataKind kind="postal" needsStructured="false" >
            <Type type="home" />
            <Type type="work" />
            <Type type="other" />
            <Type type="custom" />
        </DataKind>
        <DataKind kind="organization" maxOccurs="1" />
        <DataKind kind="website" />
        <DataKind kind="sip_address" maxOccurs="1" />
        <DataKind kind="note" maxOccurs="1" />
    </EditSchema>
</ContactsAccountType>

Но экран редактирования в Native, похоже, не соблюдает это. Он возвращается к окну редактирования по умолчанию, где пользователю разрешено редактировать / добавлять без каких-либо ограничений. Но я не могу синхронизировать их с моим сервером, так как он не поддерживается.

Где я делаю не так? Это устройство зависит?

...