Gmail के लिए Android पर कॉन्टेंट उपलब्ध कराने वाली कंपनी

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 */);

कॉन्टेंट देने वाले के बारे में क्वेरी करें

ईमेल पता चुनकर, आप ContentProvider यूआरआई (यूआरआई) ले सकते हैं, जिसके आधार पर आप क्वेरी कर रहे हैं. हमने यूआरआई को बनाने और दिखाए गए कॉलम को तय करने के लिए, GmailContract.java नाम का एक आसान क्लास दिया है.

कोई ऐप्लिकेशन इस यूआरआई से सीधे तौर पर क्वेरी कर सकता है — या इससे भी बेहतर विकल्प के लिए, CursorLoader — का इस्तेमाल करके, किसी खाते पर मौजूद सभी लेबल की जानकारी वाला कर्सर पाया जा सकता है:

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

इस कर्सर में मौजूद डेटा की मदद से, यूआरआई की वैल्यू को 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
        }
    }
}

ज़्यादा मदद के लिए, कॉन्टेंट देने वाले के बारे में बुनियादी बातें पढ़ें

उदाहरण देखें

कॉन्टेंट देने वाली इस कंपनी का उदाहरण देखने के लिए, एक सैंपल ऐप्लिकेशन डाउनलोड करें.