অ্যাপের অনুমতি ঘোষণা করা

অনুমতি ব্যবহারের জন্য ওয়ার্কফ্লোতে যেমন উল্লেখ করা হয়েছে, আপনার অ্যাপ যদি অ্যাপের অনুমতির জন্য অনুরোধ করে, তাহলে আপনাকে অবশ্যই আপনার অ্যাপের ম্যানিফেস্ট ফাইলে এই অনুমতিগুলি ঘোষণা করতে হবে। এইসব ঘোষণা অ্যাপ স্টোর ও ব্যবহারকারীদের আপনার অ্যাপের অনুরোধ করা অনুমতির সেট বুঝতে সাহায্য করে।

অনুমতির জন্য অনুরোধ করার প্রসেস নির্ভর করে অনুমতির ধরনের উপর:

অ্যাপ ম্যানিফেস্টে ঘোষণা যোগ করুন

আপনার অ্যাপ অনুরোধ করতে পারে এমন কোনও অনুমতি ঘোষণা করতে, আপনার অ্যাপের ম্যানিফেস্ট ফাইলে উপযুক্ত <uses-permission> এলিমেন্ট অন্তর্ভুক্ত করুন। যেমন, কোনও অ্যাপের ক্যামেরা অ্যাক্সেস করার প্রয়োজন হলে AndroidManifest.xml-এ এই লাইনটি থাকে:

<manifest ...>
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

হার্ডওয়্যারকে ঐচ্ছিক হিসেবে ঘোষণা করুন

কিছু অনুমতি, যেমন CAMERA, আপনার অ্যাপকে হার্ডওয়্যারের কিছু অংশ অ্যাক্সেস করতে দেয় যা শুধুমাত্র কিছু Android ডিভাইসে থাকে। আপনার অ্যাপ যদি এই হার্ডওয়্যার-সম্পর্কিত অনুমতির মধ্যে কোনও একটি ঘোষণা করে, তাহলে বিবেচনা করুন যে আপনার অ্যাপটি এখনও এমন কোনও ডিভাইসে চলতে পারে কিনা যাতে সেই হার্ডওয়্যার নেই। বেশিরভাগ ক্ষেত্রে, হার্ডওয়্যার ঐচ্ছিক, তাই আপনার <uses-feature> ডিক্লারেশনে android:required-কে false-এ সেট করে হার্ডওয়্যারকে ঐচ্ছিক হিসেবে ডিক্লেয়ার করা ভালো, যেমনটি AndroidManifest.xml ফাইলের নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

<manifest ...>
    <application>
        ...
    </application>
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />
<manifest>

হার্ডওয়্যার উপলভ্য কিনা তা নির্ধারণ করা

আপনি যদি হার্ডওয়্যারকে ঐচ্ছিক হিসেবে ঘোষণা করেন, তাহলে আপনার অ্যাপ এমন ডিভাইসেও চলতে পারে যেটিতে সেই হার্ডওয়্যার নেই। কোনও ডিভাইসে নির্দিষ্ট কোনও হার্ডওয়্যার আছে কিনা তা চেক করতে, hasSystemFeature() পদ্ধতি ব্যবহার করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে। হার্ডওয়্যার উপলভ্য না থাকলে, আপনার অ্যাপে সেই ফিচারটি বন্ধ করে দিন।

Kotlin

// Check whether your app is running on a device that has a front-facing camera.
if (applicationContext.packageManager.hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

জাভা

// Check whether your app is running on a device that has a front-facing camera.
if (getApplicationContext().getPackageManager().hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

API লেভেল অনুযায়ী অনুমতি ঘোষণা করা

শুধুমাত্র রানটাইম অনুমতি সমর্থন করে এমন ডিভাইসে অনুমতি ঘোষণা করতে—অর্থাৎ, যেসব ডিভাইসে Android 6.0 (API লেভেল 23) বা তার পরবর্তী যেকোনও ভার্সন চলে—সেগুলিতে <uses-permission> এলিমেন্টের পরিবর্তে <uses-permission-sdk-23> এলিমেন্ট অন্তর্ভুক্ত করুন।

এইসব এলিমেন্টের মধ্যে যেকোনও একটি ব্যবহার করার সময়, আপনি maxSdkVersion অ্যাট্রিবিউট সেট করতে পারবেন যা থেকে বোঝা যাবে যে নির্দিষ্ট করা মানের থেকে বেশি Android ভার্সনে রান করা ডিভাইসের জন্য নির্দিষ্ট অনুমতি প্রয়োজন নেই। এটি আপনাকে পুরনো ডিভাইসের সাথে মানানসই রেখেও অপ্রয়োজনীয় অনুমতি বাতিল করতে দেয়।

যেমন, আপনার অ্যাপে ব্যবহারকারীর তৈরি করা ফটো বা ভিডিওর মতো মিডিয়া কন্টেন্ট দেখানো হতে পারে। এই পরিস্থিতিতে, Android 10 (API লেভেল ২৯) বা তার পরবর্তী যেকোনও ভার্সনে রান করা ডিভাইসে READ_EXTERNAL_STORAGE অনুমতি ব্যবহার করার প্রয়োজন নেই, যতক্ষণ না আপনার অ্যাপ Android 10 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করছে। তবে, পুরনো ডিভাইসের সাথে কম্প্যাটিবিলিটির জন্য, আপনি READ_EXTERNAL_STORAGE অনুমতি ঘোষণা করতে এবং android:maxSdkVersion-কে ২৮-এ সেট করতে পারেন।