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

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

এই কন্টেন্ট প্রোভাইডারটি ব্যবহার করার আগে, ব্যবহারকারীর Gmail অ্যাপের সংস্করণটি এই কোয়েরিগুলো সমর্থন করে কিনা তা নির্ধারণ করতে GmailContract.canReadLabels(Context) মেথডটি কল করুন।

অনুসন্ধান করার জন্য একটি বৈধ জিমেইল অ্যাকাউন্ট খুঁজুন।

লেবেলের তথ্য জানতে একটি অ্যাপকে প্রথমে একটি বৈধ জিমেইল অ্যাকাউন্টের ইমেল ঠিকানা খুঁজে বের করতে হবে। 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 নামে একটি ক্লাস দিয়েছি। একটি অ্যাপ সরাসরি এই URI-টি কোয়েরি করতে পারে।

Cursor থাকা ডেটা ব্যবহার করে, আপনি GmailContract.Labels.URI কলামে URI মানটি সংরক্ষণ করতে পারেন, যার মাধ্যমে একটি নির্দিষ্ট লেবেলের পরিবর্তন অনুসন্ধান ও পর্যবেক্ষণ করা যায়।

পূর্বনির্ধারিত লেবেলগুলির NAME মান লোকেল অনুযায়ী ভিন্ন হতে পারে, তাই GmailContract.Labels.NAME ব্যবহার করবেন না। এর পরিবর্তে, আপনি GmailContract.Labels.CANONICAL_NAME কলামের স্ট্রিং মান ব্যবহার করে ইনবক্স, প্রেরিত, বা খসড়ার মতো পূর্বনির্ধারিত লেবেলগুলিকে প্রোগ্রাম্যাটিকভাবে শনাক্ত করতে পারেন:

// Query for all labels and find the Inbox.
try (Cursor labelsCursor = getContentResolver().query(
        GmailContract.Labels.getLabelsUri(selectedAccount), null, null, null, null)) {
    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.
            }
        }
    }
}

আরও তথ্যের জন্য, কন্টেন্ট প্রোভাইডার বেসিকস দেখুন।

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

এই কন্টেন্ট প্রোভাইডারটির কার্যকারিতা দেখতে, একটি নমুনা অ্যাপ ডাউনলোড করুন