Gmail এর জন্য Android সামগ্রী প্রদানকারী

অ্যান্ড্রয়েড জিমেইল অ্যাপে একটি বিষয়বস্তু প্রদানকারী রয়েছে যা তৃতীয় পক্ষের বিকাশকারীরা নাম এবং অপঠিত সংখ্যার মতো লেবেল তথ্য পুনরুদ্ধার করতে ব্যবহার করতে পারে এবং তথ্য পরিবর্তনের সাথে সাথে আপডেট থাকতে পারে। উদাহরণস্বরূপ, একটি অ্যাপ বা উইজেট একটি নির্দিষ্ট অ্যাকাউন্টের ইনবক্সের অপঠিত গণনা প্রদর্শন করতে পারে।

এই সামগ্রী প্রদানকারী ব্যবহার করার আগে, Gmail অ্যাপের ব্যবহারকারীর সংস্করণ এই প্রশ্নগুলি সমর্থন করে কিনা তা নির্ধারণ করতে 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 ইউআরআই পেতে পারেন। আমরা ইউআরআই তৈরি করতে এবং ফিরে আসা কলামগুলিকে সংজ্ঞায়িত করতে GmailContract.java নামে একটি সাধারণ ক্লাস প্রদান করেছি।

একটি অ্যাপ্লিকেশান এই ইউআরআইকে সরাসরি জিজ্ঞাসা করতে পারে — বা আরও ভাল, একটি CursorLoader ব্যবহার করুন — একটি অ্যাকাউন্টের সমস্ত লেবেলের তথ্য সহ একটি কার্সার পেতে:

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

এই কার্সারে থাকা ডেটার সাহায্যে আপনি GmailContract.Labels.URI কলামে 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
        }
    }
}

আরও সাহায্যের জন্য, বিষয়বস্তু প্রদানকারীর মৌলিক বিষয়গুলি পড়ুন

একটি উদাহরণ পর্যালোচনা করুন

এই বিষয়বস্তু প্রদানকারীর কার্যকারিতার উদাহরণ দেখতে, একটি নমুনা অ্যাপ ডাউনলোড করুন