Android Gmail uygulaması şunları içerir: içerik sağlayıcı doğrudan erişim ve izin gibi etiket bilgilerini almak için 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);
Bu imleçteki verilerle, URI değerini
Sorgulamak ve değişiklikleri izlemek için GmailContract.Labels.URI
sütununu
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.