বিশেষ অনুমতির জন্য অনুরোধ করুন

বিশেষ অনুমতি সিস্টেম রিসোর্সে অ্যাক্সেসকে সুরক্ষিত রাখে যা বিশেষভাবে সংবেদনশীল বা ব্যবহারকারীর গোপনীয়তার সাথে সরাসরি সম্পর্কিত নয়। এইসব অনুমতি ইনস্টল-টাইম অনুমতি ও রানটাইম অনুমতি থেকে আলাদা।

Android সিস্টেম সেটিংসের 'বিশেষ অ্যাপ অ্যাক্সেস' স্ক্রিন, যেখানে অ্যাপের তালিকা ও সেগুলির বিশেষ অনুমতি সংক্রান্ত স্ট্যাটাস দেখানো হচ্ছে।
ছবি ১. সিস্টেম সেটিংসে বিশেষ অ্যাপ অ্যাক্সেস স্ক্রিন।

বিশেষ অনুমতির কিছু উদাহরণ:

  • এক্স্যাক্ট অ্যালার্ম শিডিউল করা।
  • অন্যান্য অ্যাপের উপরে দেখানো এবং আঁকা।
  • সব স্টোরেজ ডেটা অ্যাক্সেস করা হচ্ছে।

যেসব অ্যাপ বিশেষ অনুমতি ঘোষণা করে সেগুলি সিস্টেম সেটিংসের বিশেষ অ্যাপ অ্যাক্সেস পৃষ্ঠায় দেখানো হয় (ছবি ১)। অ্যাপকে বিশেষ অনুমতি দিতে, ব্যবহারকারীকে এই পৃষ্ঠায় যেতে হবে: সেটিংস > অ্যাপ > বিশেষ অ্যাপ অ্যাক্সেস।

ওয়ার্কফ্লো

বিশেষ অনুমতির জন্য অনুরোধ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. আপনার অ্যাপের ম্যানিফেস্ট ফাইলে, বিশেষ অনুমতি ঘোষণা করুন যা আপনার অ্যাপের অনুরোধ করার প্রয়োজন হতে পারে।
  2. আপনার অ্যাপের ব্যবহারকারীর অভিজ্ঞতা (UX) এমনভাবে ডিজাইন করুন যাতে আপনার অ্যাপে নির্দিষ্ট অ্যাকশন নির্দিষ্ট বিশেষ অনুমতির সাথে যুক্ত থাকে। ব্যবহারকারীদের জানান যে কোন অ্যাকশনের জন্য আপনার অ্যাপকে ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করার অনুমতি দিতে হতে পারে।
  3. ব্যবহারকারী আপনার অ্যাপে টাস্ক বা অ্যাকশন শুরু করার জন্য অপেক্ষা করুন, যার জন্য নির্দিষ্ট ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করতে হবে। সেই সময়, আপনার অ্যাপ সেই ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় বিশেষ অনুমতি চাইতে পারে।
  4. ব্যবহারকারী আপনার অ্যাপের জন্য প্রয়োজনীয় বিশেষ অনুমতি আগে থেকেই দিয়েছেন কিনা তা চেক করুন। এটি করতে, প্রতিটি অনুমতির কাস্টম চেকিং ফাংশন ব্যবহার করুন। অনুমতি দেওয়া হলে, আপনার অ্যাপ ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করতে পারবে। তা না হলে, পরবর্তী ধাপে এগিয়ে যান। মনে রাখবেন: আপনি যখনই এমন কোনও অপারেশন করবেন যার জন্য অনুমতি প্রয়োজন, তখনই আপনাকে অবশ্যই চেক করতে হবে যে আপনার কাছে অনুমতি আছে কিনা।
  5. UI এলিমেন্টে ব্যবহারকারীকে একটি যুক্তি দেখান যা স্পষ্টভাবে ব্যাখ্যা করে যে আপনার অ্যাপ কোন ডেটা অ্যাক্সেস করার চেষ্টা করছে এবং ব্যবহারকারী বিশেষ অনুমতি দিলে অ্যাপটি ব্যবহারকারীকে কী সুবিধা প্রদান করতে পারে। এছাড়াও, আপনার অ্যাপ ব্যবহারকারীদের অনুমতি দেওয়ার জন্য সিস্টেম সেটিংসে পাঠায়, তাই ব্যবহারকারীরা কীভাবে সেখানে অনুমতি দিতে পারেন তা ব্যাখ্যা করে সংক্ষিপ্ত নির্দেশাবলীও অন্তর্ভুক্ত করুন। অনুমতি প্রদান করার বিকল্প থেকে বেরিয়ে আসার জন্য যুক্তি UI-তে ব্যবহারকারীকে স্পষ্ট বিকল্প প্রদান করতে হবে। ব্যবহারকারী যুক্তি স্বীকার করার পরে, পরবর্তী ধাপে এগিয়ে যান।
  6. ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করার জন্য আপনার অ্যাপের যে বিশেষ অনুমতি প্রয়োজন তা অনুরোধ করুন। এর জন্য সিস্টেম সেটিংসের সংশ্লিষ্ট পৃষ্ঠায় ইনটেন্ট থাকতে পারে, যেখানে ব্যবহারকারী অনুমতি দিতে পারবেন। রানটাইম অনুমতির মতো, কোনও অনুমতি ডায়ালগ নেই।
  7. onResume() পদ্ধতিতে ব্যবহারকারীর উত্তর চেক করুন – তিনি বিশেষ অনুমতি দিয়েছেন নাকি দেননি।
  8. ব্যবহারকারী আপনার অ্যাপকে অনুমতি দিলে, আপনি ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করতে পারবেন। ব্যবহারকারী অনুমতি না দিলে, আপনার অ্যাপের অভিজ্ঞতা এমনভাবে পরিবর্তন করুন যাতে আপনার অ্যাপ ব্যবহারকারীকে সেই তথ্য ছাড়াই কার্যকারিতা প্রদান করে যা সেই অনুমতি দ্বারা সুরক্ষিত।
ম্যানিফেস্ট ঘোষণা থেকে শুরু করে ব্যবহারকারীর যুক্তি, সিস্টেম সেটিংস রিডাইরেকশন এবং ব্যবহারকারীর সিদ্ধান্ত ম্যানেজ করা পর্যন্ত Android-এ বিশেষ অনুমতির ঘোষণা ও অনুরোধ করার জন্য ওয়ার্কফ্লো ব্যাখ্যা করে এমন ডায়াগ্রাম।
ছবি ২. Android-এ বিশেষ অনুমতির ঘোষণা ও অনুরোধ করার ওয়ার্কফ্লো।

বিশেষ অনুমতির জন্য অনুরোধ করুন

রানটাইম অনুমতির মতো নয়, ব্যবহারকারীকে সিস্টেম সেটিংসের বিশেষ অ্যাপ অ্যাক্সেস পৃষ্ঠা থেকে বিশেষ অনুমতি দিতে হবে। অ্যাপ ইনটেন্ট ব্যবহার করে ব্যবহারকারীদের সেখানে পাঠাতে পারে, যা অ্যাপটিকে পজ করে এবং প্রদত্ত বিশেষ অনুমতির জন্য সংশ্লিষ্ট সেটিংস পৃষ্ঠা চালু করে। ব্যবহারকারী অ্যাপে ফিরে আসার পরে, অ্যাপটি 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(...)
    }
}

বিশেষ অনুমতির জন্য অনুরোধ করার ব্যাপারে পরামর্শ

বিশেষ অনুমতির জন্য অনুরোধ করার সময় নিম্নলিখিত বিভাগগুলি বিবেচনা এবং পরামর্শ প্রদান করে।

প্রতিটি অনুমতির নিজস্ব চেক পদ্ধতি আছে

বিশেষ অনুমতি রানটাইম অনুমতির থেকে আলাদাভাবে কাজ করে। পরিবর্তে, অনুমতি API রেফারেন্স পৃষ্ঠা দেখুন এবং প্রতিটি বিশেষ অনুমতির জন্য কাস্টম অ্যাক্সেস চেক ফাংশন ব্যবহার করুন। উদাহরণ হিসেবে SCHEDULE_EXACT_ALARMS অনুমতির জন্য AlarmManager#canScheduleExactAlarms() এবং MANAGE_EXTERNAL_STORAGE অনুমতির জন্য Environment#isExternalStorageManager()।

ইন-কনটেক্সট অনুরোধ করুন

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

অনুরোধটি ব্যাখ্যা করুন

সিস্টেম সেটিংসে রিডাইরেক্ট করার আগে একটি যুক্তি প্রদান করুন। বিশেষ অনুমতি দেওয়ার জন্য ব্যবহারকারী সাময়িকভাবে অ্যাপ থেকে বেরিয়ে যান, তাই সিস্টেম সেটিংসে বিশেষ অ্যাপ অ্যাক্সেস পৃষ্ঠায় ইনটেন্ট লঞ্চ করার আগে অ্যাপ-মধ্যস্থ UI দেখান। এই UI-তে স্পষ্টভাবে ব্যাখ্যা করতে হবে যে অ্যাপটির কেন অনুমতি প্রয়োজন এবং ব্যবহারকারী কীভাবে সেটিংস পৃষ্ঠায় এটি মঞ্জুর করবেন।