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
        }
    }
}

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

उदाहरण देखें

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