একটি বিশেষ অনুমতি সিস্টেমের সেইসব রিসোর্সে প্রবেশাধিকার সুরক্ষিত করে যা বিশেষভাবে সংবেদনশীল অথবা ব্যবহারকারীর গোপনীয়তার সাথে সরাসরি সম্পর্কিত নয়। এই অনুমতিগুলো ইনস্টল-টাইম পারমিশন এবং রানটাইম পারমিশন থেকে ভিন্ন।
বিশেষ অনুমতির কিছু উদাহরণ হলো:
- সুনির্দিষ্ট অ্যালার্ম নির্ধারণ করা।
- অন্যান্য অ্যাপের উপরে প্রদর্শন ও অঙ্কন করা।
- সমস্ত স্টোরেজ ডেটা অ্যাক্সেস করা হচ্ছে।
যেসব অ্যাপ বিশেষ অনুমতির জন্য আবেদন করে, সেগুলো সিস্টেম সেটিংস-এর ‘বিশেষ অ্যাপ অ্যাক্সেস’ পাতায় দেখানো হয় (চিত্র ১)। কোনো অ্যাপকে বিশেষ অনুমতি দেওয়ার জন্য, ব্যবহারকারীকে এই পাতায় যেতে হবে: সেটিংস > অ্যাপস > বিশেষ অ্যাপ অ্যাক্সেস ।
কর্মপ্রবাহ
বিশেষ অনুমতির জন্য অনুরোধ করতে, নিম্নলিখিতগুলি করুন:
- আপনার অ্যাপের ম্যানিফেস্ট ফাইলে, আপনার অ্যাপের প্রয়োজন হতে পারে এমন বিশেষ অনুমতিগুলো ঘোষণা করুন ।
- আপনার অ্যাপের ইউজার এক্সপেরিয়েন্স (UX) এমনভাবে ডিজাইন করুন, যাতে অ্যাপের নির্দিষ্ট কিছু কাজ বিশেষ অনুমতির সাথে যুক্ত থাকে। ব্যবহারকারীদের জানিয়ে দিন যে কোন কোন কাজের জন্য আপনার অ্যাপকে তাদের ব্যক্তিগত তথ্য অ্যাক্সেস করার অনুমতি দিতে হতে পারে।
- আপনার অ্যাপে ব্যবহারকারী যখন এমন কোনো কাজ বা অ্যাকশন শুরু করবে যার জন্য নির্দিষ্ট ব্যক্তিগত ডেটা অ্যাক্সেস করার প্রয়োজন, তখন পর্যন্ত অপেক্ষা করুন । সেই সময়ে, আপনার অ্যাপ সেই ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় বিশেষ অনুমতিটি চাইতে পারে।
- আপনার অ্যাপের জন্য প্রয়োজনীয় বিশেষ অনুমতিটি ব্যবহারকারী আগে থেকেই দিয়েছেন কিনা তা যাচাই করুন। এটি করার জন্য, প্রতিটি অনুমতির নিজস্ব চেকিং ফাংশন ব্যবহার করুন। অনুমতি দেওয়া থাকলে, আপনার অ্যাপ ব্যবহারকারীর ব্যক্তিগত তথ্য অ্যাক্সেস করতে পারবে। অনুমতি না থাকলে, পরবর্তী ধাপে যান। দ্রষ্টব্য: যখনই আপনি এমন কোনো কাজ করবেন যার জন্য অনুমতির প্রয়োজন, তখন আপনাকে অবশ্যই যাচাই করে দেখতে হবে যে আপনার কাছে সেই অনুমতিটি আছে কিনা।
- ব্যবহারকারীর কাছে একটি UI এলিমেন্টে একটি যুক্তি উপস্থাপন করুন, যা স্পষ্টভাবে ব্যাখ্যা করবে আপনার অ্যাপটি কোন ডেটা অ্যাক্সেস করার চেষ্টা করছে এবং বিশেষ অনুমতিটি দিলে অ্যাপটি ব্যবহারকারীকে কী সুবিধা দিতে পারে। এছাড়াও, যেহেতু আপনার অ্যাপটি অনুমতি দেওয়ার জন্য ব্যবহারকারীদের সিস্টেম সেটিংসে পাঠায়, তাই সেখানে কীভাবে অনুমতি দেওয়া যাবে তা ব্যাখ্যা করে সংক্ষিপ্ত নির্দেশাবলীও অন্তর্ভুক্ত করুন। যুক্তির UI-তে ব্যবহারকারীর জন্য অনুমতি না দেওয়ার একটি স্পষ্ট বিকল্প থাকা উচিত। ব্যবহারকারী যুক্তিটি স্বীকার করার পর, পরবর্তী ধাপে এগিয়ে যান।
- ব্যবহারকারীর ব্যক্তিগত তথ্য অ্যাক্সেস করার জন্য আপনার অ্যাপের প্রয়োজনীয় বিশেষ অনুমতির জন্য অনুরোধ করুন। এর জন্য সম্ভবত সিস্টেম সেটিংসের সংশ্লিষ্ট পৃষ্ঠায় একটি ইন্টেন্ট পাঠাতে হবে, যেখানে ব্যবহারকারী অনুমতিটি প্রদান করতে পারবেন। রানটাইম পারমিশনের মতো, এর জন্য কোনো পারমিশন ডায়ালগ বক্স থাকে না।
-
onResume()মেথডে ব্যবহারকারীর প্রতিক্রিয়া যাচাই করুন – অর্থাৎ, তিনি বিশেষ অনুমতিটি মঞ্জুর করেছেন নাকি প্রত্যাখ্যান করেছেন। - যদি ব্যবহারকারী আপনার অ্যাপকে অনুমতি দিয়ে থাকেন, তাহলে আপনি ব্যবহারকারীর ব্যক্তিগত তথ্য অ্যাক্সেস করতে পারবেন। যদি ব্যবহারকারী অনুমতি না দিয়ে থাকেন, তবে আপনার অ্যাপের অভিজ্ঞতাকে এমনভাবে পরিবর্তন করুন যাতে সেই অনুমতি দ্বারা সুরক্ষিত তথ্য ছাড়াই আপনার অ্যাপ ব্যবহারকারীকে তার কার্যকারিতা প্রদান করতে পারে।
বিশেষ অনুমতির জন্য অনুরোধ করুন
রানটাইম পারমিশনের মতো নয়, ব্যবহারকারীকে সিস্টেম সেটিংসের 'স্পেশাল অ্যাপ অ্যাক্সেস' পেজ থেকে বিশেষ পারমিশন মঞ্জুর করতে হয়। অ্যাপগুলো একটি ইন্টেন্ট ব্যবহার করে ব্যবহারকারীদের সেখানে পাঠাতে পারে, যা অ্যাপটিকে থামিয়ে দেয় এবং নির্দিষ্ট বিশেষ পারমিশনের জন্য সংশ্লিষ্ট সেটিংস পেজটি চালু করে। ব্যবহারকারী অ্যাপে ফিরে আসার পর, অ্যাপটি onResume() ফাংশনে পারমিশনটি মঞ্জুর করা হয়েছে কিনা তা যাচাই করতে পারে।
নিম্নলিখিত নমুনা কোডটি দেখায় কিভাবে ব্যবহারকারীদের কাছ থেকে SCHEDULE_EXACT_ALARMS বিশেষ অনুমতিটি অনুরোধ করতে হয়:
val alarmManager = getSystemService<AlarmManager>()!!
when {
// if permission is granted, proceed with scheduling exact alarms…
alarmManager.canScheduleExactAlarms() -> {
alarmManager.setExact(...)
}
else -> {
// ask users to grant the permission in the corresponding settings page
startActivity(Intent(ACTION_REQUEST_SCHEDULE_EXACT_ALARM))
}
}
onResume() ফাংশনে অনুমতি যাচাই এবং ব্যবহারকারীর সিদ্ধান্ত পরিচালনার জন্য নমুনা কোড:
override fun onResume() {
// ...
if (alarmManager.canScheduleExactAlarms()) {
// proceed with the action (setting exact alarms)
alarmManager.setExact(...)
}
else {
// permission not yet approved. Display user notice and gracefully
// degrade your app experience.
alarmManager.setWindow(...)
}
}
বিশেষ অনুমতি চাওয়ার জন্য কিছু পরামর্শ
বিশেষ অনুমতি চাওয়ার ক্ষেত্রে বিবেচ্য বিষয় ও পরামর্শ নিম্নলিখিত বিভাগগুলিতে দেওয়া হয়েছে।
প্রতিটি অনুমতির নিজস্ব যাচাই পদ্ধতি রয়েছে।
বিশেষ অনুমতিগুলো রানটাইম অনুমতির চেয়ে ভিন্নভাবে কাজ করে। এর পরিবর্তে, অনুমতি এপিআই রেফারেন্স পৃষ্ঠাটি দেখুন এবং প্রতিটি বিশেষ অনুমতির জন্য কাস্টম অ্যাক্সেস চেক ফাংশন ব্যবহার করুন। উদাহরণস্বরূপ, SCHEDULE_EXACT_ALARMS অনুমতির জন্য AlarmManager#canScheduleExactAlarms() এবং MANAGE_EXTERNAL_STORAGE অনুমতির জন্য Environment#isExternalStorageManager() ব্যবহার করুন।
প্রাসঙ্গিক অনুরোধ
রানটাইম পারমিশনের মতোই, ব্যবহারকারী যখন কোনো নির্দিষ্ট কাজের জন্য পারমিশন প্রয়োজন এমন কোনো পদক্ষেপ নিতে অনুরোধ করেন, তখন অ্যাপগুলোরও সেই অনুযায়ী বিশেষ পারমিশনের জন্য আবেদন করা উচিত। উদাহরণস্বরূপ, ব্যবহারকারী একটি নির্দিষ্ট সময়ে ইমেল পাঠানোর জন্য সময় নির্ধারণ না করা পর্যন্ত SCHEDULE_EXACT_ALARMS পারমিশনের জন্য আবেদন করা থেকে বিরত থাকুন।
অনুরোধটি ব্যাখ্যা করুন।
সিস্টেম সেটিংসে রিডাইরেক্ট করার আগে একটি কারণ দর্শান। যেহেতু ব্যবহারকারীরা বিশেষ অনুমতি দেওয়ার জন্য সাময়িকভাবে অ্যাপ থেকে বেরিয়ে যান, তাই সিস্টেম সেটিংসের ‘স্পেশাল অ্যাপ অ্যাক্সেস’ পেজে ইন্টেন্টটি চালু করার আগে অ্যাপের মধ্যেই একটি ইউজার ইন্টারফেস (UI) দেখান। এই UI-তে স্পষ্টভাবে ব্যাখ্যা করা উচিত যে অ্যাপটির কেন অনুমতি প্রয়োজন এবং ব্যবহারকারী কীভাবে সেটিংস পেজে তা প্রদান করবেন।