Показывать значок приложения на контактных данных в Android - PullRequest
1 голос
/ 26 мая 2020

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

У меня в диспетчере контактов есть следующий код:

public static void addContact(Context context, MyContact contact) { 
    ContentResolver resolver = context.getContentResolver();
    // add condition that you want to check

    ContentValues contentValues = new ContentValues();

    contentValues.put(ContactsContract.Data.RAW_CONTACT_ID,
            Integer.parseInt(contact.id));
    contentValues.put(ContactsContract.Data.MIMETYPE,
            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE);
    contentValues.put(ContactsContract.CommonDataKinds.Im.TYPE,
            ContactsContract.CommonDataKinds.Im.TYPE_CUSTOM);
    contentValues.put(ContactsContract.CommonDataKinds.Im.LABEL, "Title");
    contentValues.put(ContactsContract.CommonDataKinds.Im.PROTOCOL,
            ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
    contentValues.put(ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL,
            "Title");

    contentValues.put(ContactsContract.CommonDataKinds.Im.DATA, "Transferência");

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValue(Data.MIMETYPE, MIMETYPE)
            .withValues(contentValues).build());

    try {
        resolver.applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        String ex = e.getMessage();
    }

}

`

и следующая служба в android manifest

 <service
        android:name="com.[appPackage].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" />
        <meta-data android:name="android.provider.CONTACTS_STRUCTURE" android:resource="@xml/contacts" />
    </service>

кто-нибудь может мне помочь? Спасибо

1 Ответ

0 голосов
/ 27 мая 2020

Прежде всего, каждый RawContact в Contacts DB был синхронизирован с определенным приложением, поэтому, если это еще не так, я бы посоветовал вам вставить свое приложение RawContacts, а не mangle с RawContacts, существующим на устройстве, так как они могут быть удалены, отредактированы, сброшены управляющим приложением в любое время.

Теперь, чтобы отобразить на собственное приложение контактов, вам необходимо объявить свои контакты настраиваемыми mimetype и связанными полями, вы делаете это с помощью специального файла xml с именем contacts.xml, который вы объявляете в своем манифесте, который сопоставляет разные DataKinds столбцам данных, таким как DATA1, DATA2, et c.

Затем вам нужно иметь действие, чтобы поймать намерение, которое будет запущено, когда пользователь щелкнет вашу настраиваемую строку. Вы также объявляете намерение в файле контактов. xml, а затем вам нужно установить аналогичный intent-filter в блоке манифеста вашей активности, чтобы Android знал, какое действие запускать.

Вот официальный документация: https://developer.android.com/guide/topics/providers/contacts-provider.html#CustomData и здесь: https://developer.android.com/guide/topics/providers/contacts-provider.html#SocialStreamDataKind

Вот руководство: https://medium.com/@stephen.cty / android -account-syn c -adapter-and-contacts-contract-database-983281be4847

Опять же, попробуйте убедиться, что значение myRawContactId в этом руководстве указывает на RawContact, созданный вашим приложением, что предотвратит будущее ошибки, связанные с вмешательством Google в ваши пользовательские строки данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...