طلب أذونات خاصة

يحمي الإذن الخاص من الوصول إلى موارد النظام ذات الصلة حساسة أو غير مرتبطة بشكل مباشر بخصوصية المستخدم. هذه الأذونات هي مختلف عن مدة التثبيت الأذونات ووقت التشغيل الأذونات

الشكل 1: شاشة أذونات خاصة للتطبيقات في النظام الإعدادات

تتضمن بعض أمثلة الأذونات الخاصة ما يلي:

  • جدولة المنبّهات المحدَّدة الوقت
  • عرض التطبيقات الأخرى والرسم فوقها
  • الوصول إلى جميع بيانات مساحة التخزين

يتم عرض التطبيقات التي تقدّم بيان أذونات خاص في قسم أذونات خاصة للتطبيقات. صفحة في إعدادات النظام (الشكل 1). لمنح التطبيق إذنًا خاصًا: يجب أن ينتقل المستخدم إلى هذه الصفحة: الإعدادات > التطبيقات > أذونات خاصة للتطبيقات:

سير العمل

لطلب إذن خاص، عليك اتّباع الخطوات التالية:

  1. في ملف البيان الخاص بتطبيقك، أفصح عن القيمة الخاصة الأذونات التي قد يحتاج تطبيقك إليها طلبك.
  2. تصميم تجربة المستخدم لتطبيقك بحيث ترتبط إجراءات محددة في تطبيقك باستخدام أذونات خاصة محددة. السماح للمستخدمين بمعرفة الإجراءات التي قد أن تطلب منهم منح التطبيق الإذن بالوصول إلى بيانات المستخدم الخاصة.
  3. الانتظار حتى يستدعي المستخدم المهمة أو الإجراء في تطبيقك الذي يتطلب الوصول إلى مستخدم خاص محدّد البيانات. حينئذ، يمكن لتطبيقك طلب إذن خاص المطلوبة للوصول إلى تلك البيانات.
  4. تحقق مما إذا كان المستخدم قد منح من قبل الإذن الخاص الذي أرسلته يتطلبها التطبيق. لإجراء ذلك، استخدِم التحقّق المخصّص من كل إذن. . إذا تم منح التطبيق الإذن، سيتمكّن من الوصول إلى حساب المستخدم الخاص. البيانات. إذا لم يكن الأمر كذلك، انتقِل إلى الخطوة التالية. ملاحظة: يجب عليك التحقق مما إذا كنت الحصول على الإذن في كل مرة تقوم فيها بإجراء عملية تتطلب إذن.
  5. تقديم الأساس المنطقي للمستخدم في عنصر في واجهة المستخدم بحيث يوضّح البيانات التي يحاول تطبيقك الوصول إليها ومزايا التطبيق توفيره للمستخدم في حال منح الإذن الخاص. بالإضافة إلى ذلك، لأنّ تطبيقك يرسل المستخدمين إلى إعدادات النظام لمنح الإذن أن تتضمّن تعليمات مختصرة توضّح كيفية منح المستخدمين الإذن هناك. يجب أن توفر واجهة المستخدم المنطقية خيارًا واضحًا للمستخدم التراجع عن منح الإذن. وبعد إقرار المستخدم السبب، تابع إلى الخطوة التالية.
  6. اطلب الإذن الخاص الذي يحتاجه التطبيق للوصول إليه بيانات المستخدم الخاصة. من المحتمل أن يتضمن ذلك نية لما يقابله في إعدادات النظام حيث يمكن للمستخدم منح الإذن. إلغاء الإعجاب أذونات التشغيل، فهناك لا يوجد مربع حوار أذونات نافذة منبثقة.
  7. التحقق من رد المستخدم: سواء اختار منح العرض الخاص أو رفضه إذن - بطريقة onResume().
  8. إذا منح المستخدم الإذن لتطبيقك، يمكنك الوصول إلى تطبيق خاص بيانات المستخدمين. إذا رفض المستخدم الإذن بدلاً من ذلك، يمكنك خفض ترتيبه على نحو كبير تجربة تطبيقك فإنها توفر وظائف للمستخدم بدون المعلومات محميًا بموجب هذا الإذن.
الشكل 2: سير العمل للإعلان عن الخدمات الخاصة وطلبها على 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(...)
   }
}

أفضل الممارسات والنصائح

تقدم الأقسام التالية بعض أفضل الممارسات والاعتبارات عند طلب أذونات خاصة.

لكل إذن طريقة تحقّق خاصة به

تعمل الأذونات الخاصة بشكل مختلف عن وقت التشغيل. الأذونات. بدلاً من ذلك، يمكنك الرجوع إلى مرجع واجهة برمجة التطبيقات الأذونات واستخدام عملية التحقّق من إمكانية الوصول المخصّصة الدوال لكل إذن خاص. ومن الأمثلة على ذلك: AlarmManager#canScheduleExactAlarms() بالنسبة إلى SCHEDULE_EXACT_ALARMS إذن Environment#isExternalStorageManager() بالنسبة إلى MANAGE_EXTERNAL_STORAGE إذن.

الطلب ضمن السياق

على غرار أذونات التشغيل، يجب أن تطلب التطبيقات أذونات خاصة في السياق عندما يطلب المستخدم إجراءً محددًا يتطلب إذن. على سبيل المثال، يجب الانتظار لطلب إذن "SCHEDULE_EXACT_ALARMS". إلى أن يحدد المستخدم موعدًا لإرسال رسالة إلكترونية في وقت محدد

شرح الطلب

يُرجى تقديم مبرر منطقي قبل إعادة التوجيه إلى إعدادات النظام. نظرًا لأن المستخدمين يغادرون صفحة تطبيقك مؤقتًا لمنح أذونات خاصة، يجب عرض واجهة مستخدم داخل التطبيق قبل إطلاق intent إلى صفحة أذونات خاصة للتطبيقات في إعدادات النظام واجهة المستخدم هذه يجب أن يشرح بوضوح سبب احتياج التطبيق إلى الإذن وكيف يجب على المستخدم منحه في صفحة الإعدادات.