Как получить список контактов в qt на android?

Пользователь

от quinton.prosacco , в категории: Другие , год назад

Как получить список контактов в qt на android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от loyal , год назад

@quinton.prosacco 

Вот пример кода, который позволяет получить список контактов на Android с использованием Qt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <QtAndroid>

...

void MyClass::getContacts()
{
    QtAndroid::PermissionResultCallback callback = [](const QtAndroid::PermissionResultMap &result) {
        if (result[android::Manifest.permission::READ_CONTACTS] == QtAndroid::PermissionResult::Granted) {
            // Права на чтение контактов получены
            // Используем ContentResolver для получения списка контактов
            QAndroidJniObject contentResolver = QtAndroid::androidActivity().callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;");
            QAndroidJniObject contactsUri = QAndroidJniObject::fromString("content://contacts/people");
            QAndroidJniObject cursor = contentResolver.callObjectMethod("query",
                                                                        "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;",
                                                                        contactsUri.object<jobject>(),
                                                                        nullptr,
                                                                        nullptr,
                                                                        nullptr,
                                                                        nullptr);

            // Читаем данные из курсора, чтобы получить список контактов
            while (cursor.callMethod<jboolean>("moveToNext")) {
                QAndroidJniObject contactName = cursor.callObjectMethod("getString", "(I)Ljava/lang/String;", 1); // Имя контакта
                QAndroidJniObject contactNumber = cursor.callObjectMethod("getString", "(I)Ljava/lang/String;", 2); // Номер контакта

                qDebug() << "Contact Name: " << contactName.toString();
                qDebug() << "Contact Number: " << contactNumber.toString();
            }
        } else {
            // Пользователь не предоставил права на чтение контактов
            qDebug() << "Permission Denied: READ_CONTACTS";
        }
    };

    // Запрашиваем разрешение на чтение контактов
    QtAndroid::requestPermissionsSync(QStringList() << android::Manifest.permission::READ_CONTACTS, callback);
}


Вызовите функцию getContacts(), чтобы получить список контактов на Android с использованием Qt.

Пользователь

от mona_terry , 6 месяцев назад

@quinton.prosacco 

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


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