موفّر محتوى Android لخدمة Gmail

يشتمل تطبيق Android Gmail على موفّر محتوى يمكن للمطوّرين التابعين لجهات خارجية استخدامه لاسترداد معلومات التصنيف، مثل الاسم وعدد الرسائل غير المقروءة، والاطّلاع على آخر المعلومات عند تغيّر هذه المعلومات. على سبيل المثال، يمكن أن يعرض تطبيق أو أداة عدد الرسائل غير المقروءة لصندوق بريد إلكتروني لحساب معيّن.

قبل استخدام موفّر المحتوى هذا، يمكنك طلب الطريقة GmailContract.canReadLabels(Context) لتحديد ما إذا كان إصدار المستخدم من تطبيق Gmail يتيح طلبات البحث هذه أم لا.

البحث عن حساب Gmail صالح لطلب البحث

يجب أن يعثر التطبيق أولاً على عنوان البريد الإلكتروني لحساب Gmail صالح لكي يتمكّن من الحصول على معلومات التصنيفات. من خلال إذن GET_ACCOUNTS، يمكن للسمة AccountManager عرض المعلومات التالية:

// Get the account list, and pick the first one
final String ACCOUNT_TYPE_GOOGLE = "com.google";
final String[] FEATURES_MAIL = {
        "service_mail"
};
AccountManager.get(this).getAccountsByTypeAndFeatures(ACCOUNT_TYPE_GOOGLE, FEATURES_MAIL,
        new AccountManagerCallback() {
            @Override
            public void run(AccountManagerFuture future) {
                Account[] accounts = null;
                try {
                    accounts = future.getResult();
                    if (accounts != null && accounts.length > 0) {
                        String selectedAccount = accounts[0].name;
                        queryLabels(selectedAccount);
                    }

                } catch (OperationCanceledException oce) {
                    // TODO: handle exception
                } catch (IOException ioe) {
                    // TODO: handle exception
                } catch (AuthenticatorException ae) {
                    // TODO: handle exception
                }
            }
        }, null /* handler */);

إرسال طلب بحث إلى موفّر المحتوى

باستخدام عنوان بريد إلكتروني محدّد، يمكنك الحصول على معرّف الموارد المنتظم (URI) ContentProvider لطلب البحث. لقد قدّمنا فئة بسيطة تُسمى GmailContract.java لإنشاء معرّف الموارد المنتظم (URI) وتحديد الأعمدة التي يتم عرضها.

يمكن للتطبيق الاستعلام عن معرّف الموارد المنتظم (URI) هذا مباشرةً، أو الأفضل من ذلك، استخدام CursorLoader - للحصول على مؤشر يتضمن معلومات عن جميع التصنيفات في حساب ما:

Cursor labelsCursor = getContentResolver().query(GmailContract.Labels.getLabelsUri(selectedAccount), null, null, null, null);

باستخدام البيانات الواردة في هذا المؤشر، يمكنك الاحتفاظ بقيمة معرّف الموارد المنتظم (URI) في عمود "GmailContract.Labels.URI" لطلب البحث عن التغييرات ومراقبتها على تصنيف واحد.

يمكن أن تختلف القيمة NAME للتصنيفات المحدّدة مسبقًا حسب اللغة، لذلك لا تستخدم GmailContract.Labels.NAME. بدلاً من ذلك، يمكنك التعرّف آليًا على التصنيفات المحددة مسبقًا، مثل "البريد الوارد" و"البريد المرسَل" أو "المسودات" باستخدام قيمة "السلسلة" في العمود "GmailContract.Labels.CANONICAL_NAME":

// loop through the cursor and find the Inbox
if (labelsCursor != null) {
    final String inboxCanonicalName = GmailContract.Labels.LabelCanonicalName.CANONICAL_NAME_INBOX;
    final int canonicalNameIndex = labelsCursor.getColumnIndexOrThrow(GmailContract.Labels.CANONICAL_NAME);
    while (labelsCursor.moveToNext()) {
        if (inboxCanonicalName.equals(labelsCursor.getString(canonicalNameIndex))) {
            // this row corresponds to the Inbox
        }
    }
}

للحصول على مزيد من المساعدة، يُرجى الاطّلاع على أساسيات موفّر المحتوى

مراجعة مثال

يمكنك تنزيل نموذج تطبيق للاطّلاع على مثال لموفّر المحتوى هذا.