বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

মেনিফেস্টের মধ্যে সিঙ্ক অ্যাডপটর ডিক্লেয়ার করা

যখনই আপনি আপনার অ্যাপে সিঙ্ক অ্যাডাপটর উপাদান যুুক্ত করবেন, আপনাকে উপাদান ব্যবহার সম্পর্কিত পারমিশন রিকোয়েস্ট করতে হবে, আপনি যে বাউন্ড Service যুক্ত করেছেন তাকে ডিক্লেয়ার করতে হবে।

যেহেতু সিঙ্ক অ্যাডাপটর উপাদান কোড রান করে যা নেটওয়ার্ক এবং ডিভাইসের মধ্যে ডাটা ট্রান্সফার করে, আপনাকে ইন্টারনেটে প্রবেশ করার জন্য পারমিশন রিকোয়েস্ট করা প্রয়োজন। উপরন্তু সিঙ্ক অ্যাডাপটর সেটিং পড়তে এবং লেখার জন্য আপনার অ্যাপের পারমিশন রিকোয়েস্ট করা প্রয়োজন, সুতরাং আপনি আপনার অ্যাপের মধ্যে অন্য উপাদান থেকে সিঙ্ক অ্যাডাপট কে প্রোগ্রামেটিক্যালী নিয়ন্ত্রণ করতে পারবেন। আপনার একটি বিশেষ পারমিশন রিকোয়েস্ট করতে হবে যা আপনি Creating a Stub Authenticator অনুশীলনীতে যে অথেনটিকেটর উপাদান তৈরী করেছিলেন তা আপনার অ্যাপকে ব্যবহার করতে দেয়।

এই পারমিশনগুলোকে রিকোয়েস্ট করার জন্য < manifest> এর চাইল্ড এলিমেন্ট হিসাবে নিচের বিষয়গুলো আপনার অ্যাপ মেনিফেস্টে যুক্ত করুন:

android.permission.INTERNET

ইন্টারনেটে প্রবেশ করার জন্য সিঙ্ক অ্যাডাপটর কোড অনুমোদন করা যাতে এটা ডিভাইস থেকে সার্ভারে ডাটা ডাউনলোড এবং আপলোড করতে পারে। আপনি যদি পূর্বে এই পারমিশন রিকোয়েস্ট করে থাকেন আপনাকে নতুন করে এই এটাকে যুক্ত করতে হবেনা।

android.permission.READ_SYNC_SETTINGS

চলতি সিঙ্ক অ্যাডাপটর সেটিং পড়ার জন্য আপনার অ্যাপকে অনুমোদন করে। উদাহরণস্বরূপ, getIsSyncable()কল করার জন্য আপনার এই পারমশিন প্রয়োজন।

android.permission.WRITE_SYNC_SETTINGS

সিঙ্ক অ্যাডাপটর সেটিং নিয়ন্ত্রণ করতে আপনার অ্যাপকে অনুমোদন করে। addPeriodicSync()ব্যবহার করে মেয়াদকালীন সিঙ্ক অ্যাডাপটর রানস সেটআপ করার জন্য আপনার এই পারমিশন প্রয়োজন। requestSync()কল করা এই পারমিশনের জন্য প্রয়োজনীয় নয়। সিঙ্ক অ্যাডপটর রান করা বিষয়ক আরও তথ্যের জন্য Running A Sync Adapter দেখুন।

android.permission.AUTHENTICATE_ACCOUNTS

আপনি Creating a Stub Authenticator অনুশীলনীতে যে অথেনটিকেটর উপাদান তৈরী করেছিলেন তা আপনার ব্যবহার করতে দেয়।

নিচের চিত্রটি দেখায় কীভাবে পারমিশন যুক্ত করতে হয়:

<manifest>
...
    <uses-permission
            android:name="android.permission.INTERNET"/>
    <uses-permission
            android:name="android.permission.READ_SYNC_SETTINGS"/>
    <uses-permission
            android:name="android.permission.WRITE_SYNC_SETTINGS"/>
    <uses-permission
            android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
...
</manifest>

চুড়ান্তভাবে, বাউন্ড Service ডিক্লেয়ার করতে, যা ফ্রেমওয়ার্ক আপনার সিঙ্ক অ্যাডাপটরের সাথে যোগাযোগ করতে ব্যবহার করে, < application> এর একটি চাইল্ড এলিমেন্ট হিসাবে আপনার অ্যাপ মেনিফেস্টে নিচের XML যুক্ত করুন:

<service
            android:name="com.example.android.datasync.SyncService"
            android:exported="true"
            android:process=":sync">
        <intent-filter>com.example.android.datasync.provider
            <action android:name="android.content.SyncAdapter"/>
        </intent-filter>
        <meta-data android:name="android.content.SyncAdapter"
                android:resource="@xml/syncadapter" />
    </service>

< intent-filter> এলিমেন্ট একটি ফিল্টার সেটআপ করে যা ইনটেন্ট একশন android.content.SyncAdapter দ্বারা সক্রিয় হয়, সিঙ্ক অ্যাডাপটর রান করানোর জন্য সিস্টেম কর্তৃক পাঠানো হয়। যখন ফিল্টার সক্রিয় করনো হয়, আপনি যে বাউন্ড সার্ভিস তৈরী করেছেন সিস্টেম তা শুরু করে, এই উাদহরণে যেটা হচ্ছে SyncService। এট্রিবিউট android:exported="true" টি Service এ প্রবেশ করতে প্রসেসকে অনুমোদন করে আপনার অ্যাপকে (সিস্টেম সহ) নয়। এট্রিবিউট android:process=":sync" টি সিস্টেমকে একটি বৈশ্বিক শেয়ার করা প্রসেস যার নাম sync তার মধ্যে Service কে রান করতে বলে। যদি আপনার যদি আপনার অ্যাপের মধ্যে মাল্টিপল সিঙ্ক অ্যাডপটর থেকে থাকে যা এই প্রসেস শেয়ার করতে পারে, এটা ওভারহেড কমিয়ে দেয়।

< meta-data> এলিমেন্ট পূর্বে তৈরী করেছেন এমন সিঙ্ক অ্যাডাপটর মেটাডেটা XML ফাইলের নাম প্রদান করে। android:name এট্রিবিউট নির্দেশ করে যে এই মেটাডেটা সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্কের জন্য। android:resource এলিমেন্ট মেটাডেটা ফাইলের নাম নির্দিষ্ট করে।

এখন আপনার কাছে সিঙ্ক অ্যাডাপটরের জন্য সকল উপাদান আছে। পরবর্তী অনুশীলনী আপনাকে দেখাবে কীভাবে আপনার সিঙ্ক অ্যাডাপটরকে রান করতে সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্ককে বলতে হয়, একটি ইভেন্টের প্রতিক্রিয়ায় নাকি বা একটি নিয়মিত সময়সূচী অনুযায়ী।