Gmail için Android içerik sağlayıcı

Android Gmail uygulaması şunları içerir: içerik sağlayıcı almak için kullanabileceği bilgilerdir. Üçüncü taraf geliştiricilerin, ad ve bilgi alabilir ve bilgiler değiştikçe bildirim alabilirsiniz. Örneğin, bir uygulamadaki veya widget'ı belirli bir hesabın gelen kutusundaki okunmamış sayıyı gösterebilir.

Bu içerik sağlayıcıyı kullanmadan önce GmailContract.canReadLabels(Context) uygulama sürümünün bu uygulamaları destekleyip desteklemediğini daha fazla bilgi edineceksiniz.

Sorgulamak için geçerli bir Gmail hesabı bulun

Bir uygulamanın sorgulamak için önce geçerli bir Gmail hesabının e-posta adresini etiket bilgileri. Şununla GET_ACCOUNTS izninin yerine, AccountManager şu bilgileri döndürebilir:

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

İçerik sağlayıcıyı sorgulama

Bir e-posta adresi seçtikten sonra, ContentProvider Sorgunun kullanılacağı URI. Google Ads Temel Düzey Eğitim Programı'nın GmailContract.java kodunu ekleyin ve döndürülen sütunları tanımlayın.

Bir uygulama bu URI'yi doğrudan sorgulayabilir veya daha iyisi, CursorLoader — bir hesaptaki tüm etiketlerle ilgili bilgileri içeren bir İmleç almak için:

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

Daha sonra bu imleçteki verilerle, URI değerini GmailContract.Labels.URI sütununu kullanarak bir düşünebilirsiniz.

Önceden tanımlanmış etiketler için NAME değeri yerel ayara göre değişebileceğinden GmailContract.Labels.NAME kullanın. Bunun yerine, içindeki Dize değerini kullanarak Gelen Kutusu, Gönderilmiş Postalar veya Taslaklar gibi önceden tanımlanmış etiketleri GmailContract.Labels.CANONICAL_NAME sütunu:

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

Daha fazla yardım için şunu okuyun: İçerik sağlayıcı ile ilgili temel bilgiler

Bir örneği inceleyin

Bu içerik sağlayıcının uygulamalı bir örneğini görmek için: örnek bir uygulama indirin.