أذونات وقت التشغيل

في Android 6.0 والإصدارات الأحدث ، تم تصميم نموذج أذونات تطبيقات Android لجعل الأذونات أكثر قابلية للفهم ، وفائدة ، وآمنة للمستخدمين. نقل نموذج تطبيقات الروبوت التي تتطلب أذونات خطيرة (انظر أذونات المتأثرة ) من نموذج إذن تثبيت وقت لنموذج إذن وقت التشغيل:

  • أذونات وقت التثبيت

    (أندرويد 5.1 وأقل) للمستخدمين منح أذونات خطيرة إلى التطبيق عند تثبيت أو تحديث التطبيق. يمكن للشركات المصنعة للأجهزة وشركات الجوال التثبيت المسبق للتطبيقات بأذونات مضمونة مسبقًا دون إخطار المستخدم.

  • أذونات وقت التشغيل

    (الروبوت 6،0-9) للمستخدمين منح أذونات خطرا على التطبيق عند تشغيل التطبيق. عندما يتم طلب الأذونات (مثل وقت تشغيل التطبيق أو عندما يصل المستخدم إلى ميزة معينة) يعتمد على التطبيق ، لكن المستخدم يمنح / يرفض وصول التطبيق إلى مجموعات أذونات محددة. يمكن لمصنعي المعدات الأصلية / شركات الاتصالات تثبيت التطبيقات مسبقًا ، ولكن لا يمكنهم منح أذونات مسبقًا ما لم يمروا بعملية الاستثناء. (راجع إنشاء استثناءات .)

    يرى (الروبوت 10) للمستخدمين زيادة الشفافية وتملك السيطرة على التطبيقات التي لها أذونات وقت الاعتراف النشاط (AR). يطلب من المستخدمين من أذونات وقت الحوار إما السماح دائما، تسمح في حين الاستخدام، أو رفض الأذونات. على ترقية نظام التشغيل لالروبوت 10، يتم الاحتفاظ الأذونات الممنوحة للتطبيقات، ولكن يمكن للمستخدمين الانتقال إلى الإعدادات وتغييرها.

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

أذونات متأثرة

يتطلب Android 6.0 والإصدارات الأحدث أذونات خطيرة لاستخدام نموذج أذونات وقت التشغيل. أذونات خطيرة هي أذونات ذات المخاطر العالية (مثل READ_CALENDAR ) التي تمنح الطالبة التطبيقات الوصول إلى بيانات المستخدم الخاصة، أو السيطرة على الجهاز، والتي يمكن أن تؤثر سلبا على المستخدم. لعرض قائمة الأذونات الخطيرة ، قم بتشغيل الأمر:

adb shell pm list permissions -g -d

الروبوت 6.0 وأعلى لا يغير من سلوك أذونات العادية . هذه كلها أذونات غير خطيرة بما في ذلك الأذونات العادية والنظام والتوقيع. أذونات العادية هي أذونات انخفاض المخاطر (مثل SET_WALLPAPER ) التي تمنح الطالبة التطبيقات الوصول إلى معزولة مستوى التطبيق يتميز بأقل قدر من المخاطر إلى تطبيقات أخرى، النظام، أو المستخدم. كما هو الحال في Android 5.1 والإصدارات الأقل ، يمنح النظام تلقائيًا أذونات عادية للتطبيق الذي يطلب عند التثبيت ولا يطالب المستخدم بالموافقة. للحصول على تفاصيل حول الأذونات، راجع <إذن> العنصر الوثائق.

قيود صارمة وناعمة في Android 10

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

  • (القيود الصلب) لا يمكن منح أذونات التطبيقات التي لم يتم اللائحة البيضاء.
  • (القيود لينة) تطبيقات دون إدراجه في القائمة البيضاء تتصرف وفقا لإذن المحددة التي تطلبها. تم وصف السلوك في الوثائق العامة للإذن المطلوب.

عند تثبيت أحد التطبيقات ، قد يختار المثبت (مثل متجر Google Play) عدم وضع الأذونات المقيدة للتطبيق في القائمة البيضاء. يتم تقييد الأذونات بواسطة النظام الأساسي ولا يمكن منحها إلا إذا كان التطبيق يلبي معايير خاصة لكل سياسة النظام الأساسي. تتضمن أمثلة أنواع الأذونات المقيدة بشدة أذونات الرسائل القصيرة وسجل المكالمات.

تحدث عملية الإدراج في القائمة البيضاء أثناء التثبيت ومتى

  • تم تثبيت أحد التطبيقات بالفعل أثناء ترقية Android من 9 إلى 10.
  • إذن مسبق أو التطبيق مثبت مسبقًا.
  • مطلوب إذن للدور الذي تم تحديده بالفعل لإضافة الإذن إلى القائمة البيضاء.
  • يقوم المثبت (مثل متجر Google Play) بوضع علامة على الإذن على أنه مدرج في القائمة البيضاء.

لا يمكن للمستخدمين إضافة الأذونات إلى القائمة البيضاء يدويًا.

متطلبات

ينطبق نموذج إذن وقت التشغيل على جميع التطبيقات ، بما في ذلك التطبيقات المثبتة مسبقًا والتطبيقات التي يتم تسليمها إلى الجهاز كجزء من عملية الإعداد. تتضمن متطلبات برامج التطبيق ما يلي:

  • يجب أن يكون نموذج إذن وقت التشغيل متسقًا عبر جميع الأجهزة التي تعمل بنظام Android 6.0 والإصدارات الأحدث. يتم فرض ذلك من خلال اختبارات Android Compatibility Test Suite (CTS).
  • يجب أن تطالب التطبيقات المستخدمين بمنح أذونات التطبيق في وقت التشغيل. لمزيد من التفاصيل، انظر التطبيقات تحديث . يجوز منح استثناءات محدودة للتطبيقات والمعالجات الافتراضية التي توفر وظائف الجهاز الأساسية الأساسية للتشغيل المتوقع للجهاز. (على سبيل المثال، المسجل التطبيق الافتراضي للجهاز لمعالجة ACTION_CALL قد يكون الهاتف الوصول إذن.) لمزيد من التفاصيل، انظر إنشاء استثناءات .
  • يجب أن تستهدف التطبيقات التي تم تحميلها مسبقًا والتي تحتوي على أذونات خطيرة مستوى واجهة برمجة التطبيقات 23 وتحافظ على نموذج إذن وقت التشغيل. أي أن تدفق واجهة المستخدم أثناء تثبيت التطبيق يجب ألا ينحرف عن تنفيذ AOSP لـ PermissionController ، يمكن للمستخدمين إبطال الأذونات الخطيرة للتطبيقات المثبتة مسبقًا ، وما إلى ذلك.
  • يجب أن تستخدم التطبيقات بدون رأس نشاطًا لطلب أذونات أو لمشاركة UID مع تطبيق آخر لديه الأذونات اللازمة. لمزيد من التفاصيل، انظر التطبيقات مقطوع الرأس .

ترحيل الأذونات

تظل الأذونات الممنوحة للتطبيقات على Android 5.x ممنوحة بعد التحديث إلى Android 6.0 أو أعلى ، ولكن يمكن للمستخدمين إلغاء هذه الأذونات في أي وقت.

في تحديث Android من 9 إلى 10 ، يتم إدراج جميع الأذونات المقيدة بشدة في القائمة البيضاء. للاطلاع على تفاصيل تنفيذ أذونات انقسام المقدمة / الخلفية، انظر الروبوت 10 التغيير الخصوصية ، بدءا من موقع طلب الخلفية .

اندماج

عند دمج نموذج أذونات وقت تشغيل التطبيق لنظام Android 6.0 والإصدارات الأحدث ، يجب عليك تحديث التطبيقات المثبتة مسبقًا للعمل مع النموذج الجديد. يمكنك أيضا تحديد استثناءات للتطبيقات التي هي معالجات الافتراضي / مقدمي حصول على وظائف أساسية، وتحديد أذونات مخصصة، وتخصيص موضوع المستخدمة في PermissionController التطبيق.

تحديث التطبيقات

التطبيقات الموجودة على صورة النظام والتطبيقات المثبتة مسبقًا ليست أذونات مضمونة مسبقًا تلقائيًا. نحن نشجعكم على العمل مع المطورين المثبتة مسبقا التطبيق (OEM، الناقل، وطرف ثالث) لإجراء التعديلات المطلوبة باستخدام التطبيق المبادئ التوجيهية المطور . على وجه التحديد ، يجب عليك التأكد من تعديل التطبيقات المثبتة مسبقًا لتجنب الأعطال والمشكلات الأخرى عند إبطال المستخدمين للأذونات.

التطبيقات المحملة مسبقًا

في Android 9 والإصدارات الأقدم ، يجب أن تستهدف التطبيقات المحملة مسبقًا التي تستخدم أذونات خطيرة مستوى واجهة برمجة التطبيقات 23 أو أعلى ، وتحافظ على نموذج إذن AOSP Android 6.0 والإصدارات الأحدث. على سبيل المثال، يجب أن تدفق UI أثناء تثبيت التطبيق لا تحيد عن تنفيذ AOSP من PermissionController . يمكن للمستخدمين حتى إبطال الأذونات الخطيرة للتطبيقات المثبتة مسبقًا.

في Android 6.0 إلى 9 ، يتم منح بعض الأذونات أثناء تدفق التثبيت. ومع ذلك، بدءا من عام 10، وتدفق تثبيت (التي يؤديها Package Installer التطبيق) هي وظيفة منفصلة من أذونات منح (في Permission Controller التطبيق).

تطبيقات مقطوعة الرأس

يمكن للأنشطة فقط طلب الأذونات. لا يمكن للخدمات طلب الأذونات مباشرة.

  • في Android 5.1 والإصدارات الأقدم ، يمكن للتطبيقات التي لا تحتوي على رؤوس طلب أذونات عند تثبيتها ، أو إذا تم تثبيتها مسبقًا دون استخدام أي نشاط.
  • في Android 6.0 والإصدارات الأحدث ، يجب أن تستخدم التطبيقات التي لا تحتوي على رأس إحدى الطرق التالية لطلب الأذونات:
    • أضف نشاطًا لطلب الأذونات. (هذا هو الأسلوب المفضل.)
    • مشاركة UID مع تطبيق آخر لديه الأذونات اللازمة. استخدم هذه الطريقة فقط عندما تحتاج إلى النظام الأساسي للتعامل مع ملفات APK متعددة كتطبيق واحد.

الهدف هو تجنب إرباك المستخدمين بطلبات الأذونات التي تظهر خارج السياق.

تخصيص واجهة مستخدم PackageInstaller

إذا رغبت، يمكنك تخصيص موضوع ضوابط UI عن طريق تحديث المواضيع الجهاز الافتراضي ( Theme.DeviceDefault.Settings و Theme.DeviceDefault.Light.Dialog.NoActionBar ) المستخدمة من قبل PackageInstaller. ومع ذلك ، نظرًا لأن التناسق أمر بالغ الأهمية لمطوري التطبيقات ، فلا يمكنك تخصيص الموضع والموضع والقواعد الخاصة بوقت ظهور واجهة مستخدم الأذونات.

لتشمل سلاسل للغات إضافية، والمساهمة في السلاسل إلى AOSP.

إنشاء استثناءات

يمكنك قبل منح أذونات التطبيقات التي هي معالجات الافتراضية أو مقدمي حصول على وظائف التشغيل الأساسية باستخدام DefaultPermissionGrantPolicy.java فئة في PackageManager. أمثلة:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

تحديد أذونات مخصصة

يمكنك تحديد أذونات مخصصة والجماعات كالمعتاد أو خطرة وإضافة أذونات OEM / الناقل محددة للفئات أذونات موجودة، تماما كما يمكن في الروبوت 5.x و الإصدارات السابقة.

في Android 6.0 والإصدارات الأحدث ، إذا أضفت إذنًا خطيرًا جديدًا ، فيجب التعامل معه بنفس طريقة التعامل مع الأذونات الخطيرة الأخرى (المطلوبة أثناء وقت تشغيل التطبيق والتي يمكن للمستخدمين إبطالها). خاصة:

  • يمكنك إضافة أذونات جديدة إلى مجموعة حالية ، لكن لا يمكنك تعديل تعيين AOSP للأذونات الخطرة ومجموعات الأذونات الخطيرة. (بمعنى آخر ، لا يمكنك إزالة إذن من مجموعة وتخصيصه لمجموعة أخرى).
  • يمكنك إضافة مجموعات أذونات جديدة في التطبيقات المثبتة على الجهاز ، ولكن لا يمكنك إضافة مجموعات أذونات جديدة في بيان النظام الأساسي.

أذونات الاختبار

يشتمل Android على اختبارات Compatibility Test Suite (CTS) التي تتحقق من تعيين الأذونات الفردية للمجموعات الصحيحة. يعد اجتياز هذه الاختبارات مطلبًا لتوافق Android 6.0 والإصدارات الأحدث من CTS.