অ্যান্ড্রয়েড জিমেইল অ্যাপে একটি কন্টেন্ট প্রোভাইডার রয়েছে যা তৃতীয় পক্ষের ডেভেলপাররা নাম এবং অপঠিত সংখ্যার মতো লেবেল তথ্য পুনরুদ্ধার করতে ব্যবহার করতে পারে এবং সেই তথ্য পরিবর্তনের সাথে সাথে আপডেট থাকতে পারে। উদাহরণস্বরূপ, একটি অ্যাপ বা উইজেট একটি নির্দিষ্ট অ্যাকাউন্টের ইনবক্সের অপঠিত সংখ্যা প্রদর্শন করতে পারে।
এই কন্টেন্ট প্রোভাইডার ব্যবহার করার আগে, GmailContract.canReadLabels(Context) পদ্ধতিতে কল করে নির্ধারণ করুন যে ব্যবহারকারীর 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 URI পেতে পারেন। আমরা URI তৈরি করতে এবং ফিরে আসা কলামগুলি সংজ্ঞায়িত করতে GmailContract.java নামে একটি সহজ ক্লাস সরবরাহ করেছি।
একটি অ্যাপ সরাসরি এই URI-টি জিজ্ঞাসা করতে পারে — অথবা আরও ভালোভাবে বলতে গেলে, একটি CursorLoader ব্যবহার করে — একটি অ্যাকাউন্টের সমস্ত লেবেলের তথ্য সহ একটি Cursor পেতে পারে:
Cursor labelsCursor = getContentResolver().query(GmailContract.Labels.getLabelsUri(selectedAccount), null, null, null, null);
এই কার্সারের ডেটা ব্যবহার করে, আপনি GmailContract.Labels.URI কলামে URI মানটি ধরে রাখতে পারেন এবং একটি একক লেবেলে পরিবর্তনগুলি অনুসন্ধান করতে এবং পর্যবেক্ষণ করতে পারেন।
পূর্ব-নির্ধারিত লেবেলের জন্য NAME মান লোকেল অনুসারে পরিবর্তিত হতে পারে, তাই GmailContract.Labels.NAME ব্যবহার করবেন না। পরিবর্তে, আপনি GmailContract.Labels.CANONICAL_NAME কলামে String মান ব্যবহার করে Inbox, Sent বা Drafts এর মতো পূর্ব-নির্ধারিত লেবেলগুলিকে প্রোগ্রাম্যাটিকভাবে সনাক্ত করতে পারেন:
// 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
}
}
}
আরও সাহায্যের জন্য, কন্টেন্ট প্রদানকারীর মূল বিষয়গুলি পড়ুন
একটি উদাহরণ পর্যালোচনা করুন
এই কন্টেন্ট প্রোভাইডারটির একটি উদাহরণ দেখতে, একটি নমুনা অ্যাপ ডাউনলোড করুন ।