نظرة عامة على الأذونات

الإعلانات

نظرة عامة على الأذونات

 

نظرة عامة على الأذونات

الغرض الأساسي من الأذونات هو حماية خصوصية مستخدم الأندرويد. يجب على تطبيقات الأندرويد.. 

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

بناءً على الخاصيه، قد يمنح النظام الأذن تلقائياً أو قد يطلب من المستخدم الموافقة على الطلب.

تقدم هذه الصفحة نظرة عامه حول كيفية عمل أذونات الأندرويد، بما في ذلك:

كيفية تقديم الأذونات للمستخدم، الفرق بين طلب الأذونات أثناء التثبيت و أثناء التشغيل، كيفية فرض الأذونات، و أنواع الأذونات ومجموعاتها.

لو كنت فقط تريد دليل إرشادي حول إستخدام أذونات التطبيق، بدلاً من هذا راجع طلب أذونات التطبيق.

 

 

قبول الأذونات


يجب أن يعلن التطبيق عن الأذونات التي يتطلبها من خلال تضمين وسوم <uses-permission> في ملف إيضاح التطبيق.

مثال، تطبيق يحتاج لإرسال رسالة SMS سيكون لديه هذا السطر في ملف الإيضاح:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application ...>
        ...
    </application>
</manifest>

 

 

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

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

لمزيد من المعلومات حول الأذونات العاديه والخطيرة، راجع مستويات الحماية.

 

 

الطلبات الفوريه للأذونات الخطيرة


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

 

طلبات وقت التشغيل (أندرويد 6.0 و أعلى)

إذا كان الجهاز يعمل بنظام أندرويد 6.0 (API 23) أو أعلى، وكانت النسخة المستهدفة من targetSdkVersion للتطبيق هي 23 أو أعلى، فلن يتم إبلاغ المستخدم بأي أذونات للتطبيق أثناء التثبيت.

يجب أن يطلب تطبيقك من المستخدم السماح بالأذونات الخطيرة أثناء التشغيل.

عندما يطلب تطبيقك الأذن، يرى المستخدم مربع حوار (كما هو موضح في الشكل 1، يسار) يخبر المستخدم عن مجموعة الأذونات..

التي يحاول تطبيقك الوصول إليها. يحتوي مربع الحوار على أزرار القبول والرفض.

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

عندما يتم تحديده، فسوف يشير إلى أن المستخدم لا يرغب في رؤية طلب الأذونات مجدداً (انظر الشكل 1، يمين).

شكل 1. مربع حوار الأذن الأوليه (يسار) وطلب الأذن الثانوي مع خيار إيقاف الطلبات (يمين).

 

إذا قام المستخدم بتحديد مربع “عدم السؤال مجدداً” ثم نقر فوق رفض، فلن يطالب النظام المستخدم، لو حاولت لاحقاً طلب نفس الأذن.

حتى لو منح المستخدم تطبيقك الأذن التي يطلبها، لا يمكنك دائماً الإعتماد على الحصول عليها. يتوفر للمستخدمين أيضاً خيار تمكين وتعطيل الأذونات واحداً تلو الآخر في إعدادت النظام.

يجب عليك دائماً التحقق من الأذونات وطلبها أثناء التشغيل للحماية من أخطاء وقت التشغيل (SecurityException) إستثناء الأمان.

 

للحصول على تفاصيل عن كيفية التعامل مع أذونات وقت التشغيل، راجع طلب أذونات التطبيق.

طلبات أثناء التثبيت (أندرويد 5.1.1 و أقل)

إذا كان الجهاز يعمل بنظام أندرويد 5.1.1 (API 22) أو أقل، أو كانت النسخة المستهدفة من targetSdkVersion للتطبيق هي 22 أو أقل.

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

شكل 2. مربع حوار أذن التثبيت.

 

إذا نقر المستخدم على قبول، سيتم السماح بجميع الأذونات التي يطلبها التطبيق. إذا رفض المستخدم طلب الأذونات، سيقوم النظام بإلغاء تثبيت التطبيق.

إذا أحتوى تحديث التطبيق حاجة لأذونات إضافيه، سيُطلب من المستخدم قبول هذه الأذونات الجديدة قبل تحديث التطبيق.

للحصول على نظرة عامه على نماذج تجربة المستخدم الموصى بها لطلب الأذونات، راجع أفضل ممارسات أذونات التطبيق.

لمعرفة كيفية التحقق من الأذونات وطلبها من المستخدم، راجع طلب أذونات التطبيق.

 

 

 

 

أذونات لخصائص الجهاز الإختياريه


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

لذا إن قام تطبيقك بطلب أذن للوصول إلى الكاميرا، فمن المهم أيضاً أن تقوم بتضمين وسم <uses-feature> في ملف الإيضاح، للإعلان عما إذا كانت هذه الخاصية مطلوبة فعلاً أم لا. مثال:

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

 

إذا قمت بإعلان "android:required="false لهذه الخاصيه، سيسمح قوقل بلي بتثبيت تطبيقك على الأجهزة التي لا تحتوي على هذه الخاصيه.

ثم يجب عليك التحقق مما إذا كان الجهاز الحالي يحتوي على الخاصيه أثناء التشغيل، عن طريق إستدعاء ()PackageManager.hasSystemFeature، وتعطيل هذه الخاصية بأمان إن لم تكن متاحه.

إذا لم توفر الوسم <uses-feature>، فإنه عندما يرى قوقل بلي أن تطبيقك يطلب الأذن المطابقه، سيفترض أن تطبيقك يتطلب هذه الخاصيه.

لذا سيعمل على تصفية تطبيقك من الأجهزة التي تفتقر للخاصيه، كما لو أنك قد أعلنت عن "android:required="true في الوسم <uses-feature>.

لمزيد من المعلومات، راجع قوقل بلي والتصفية بناءً على الخاصيه.

 

 

تنفيذ الأذونات


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

لمزيد من المعلومات حول إعلان أذونات مخصصه، راجع تحديد أذونات مخصصة للتطبيق.

 

 

 

تنفيذ أذونات النشاط


الأذونات المطبقه بإستخدام السمه android:permission على الوسم <activity> في ملف الإيضاح تقيد من يمكنه بدء هذا النشاط.

يتم التحقق من الأذن أثناء بدء النشاط ()Context.startActivity و بدء النتائج ()Activity.startActivityForResult.

إذا لم يكن لدى المستدعي الأذن المطلوبه، يتم رمي SecurityException من الإستدعاء.

 

 

تنفيذ أذونات الخدمه


الأذونات المطبقة بإستخدام السمه android:permission على الوسم <service> في ملف الإيضاح تقيد من يمكنه بدء أو ربط الخدمة المرتبطه.

يتم التحقق من الأذن أثناء Context.startService(), Context.stopService()، Context.bindService().

إذا لم يكن لدى المستدعي الأذن المطلوبه، يتم رمي SecurityException من الإستدعاء.

 

 

تنفيذ أذونات البث


الأذونات المطبقة بإستخدام السمه android:permission على الوسم <receiver> تقيد من يمكنه إرسال البثوث لمستقبل البثوث المرتبط.

يتم التحقق من الأذن بعد إرجاع ()Context.sendBroadcast، حيث يحاول النظام تسليم البث الذي تم تقديمه إلى المستقبل المحدد.

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

بنفس الطريقه، يمكن توفير أذن لـ()Context.registerReceiver للتحكم فيمن يمكنه البث إلى المستقبل المسجل برمجياً.

والعكس، يمكن توفير أذن عند إستدعاء ()Context.sendBroadcast لتقييد مستقبلات البث المسموح لها بإستقبال البث.

لاحظ أن كل من المستقبل و البث يمكن يمكنهما طلب أذن. وعندما يحدث هذا، يتحققان من كل أذن يجب أن تمرر للغرض لكي يتم تسليمها للغرض المرتبط.

لمزيد من المعلومات، راجع تقييد البثوث بالأذونات.

 

 

 

 

تنفيذ أذونات لموفر المحتوى


الأذونات المطبقة بإستخدام السمه android:permission على الوسم <provider> تقيد من يمكنه الوصول إلى البيانات في موفر المحتوى.

(متاح لدى موفري المحتوى ميزة أمان إضافية مهمه تسمى أذونات URI الموصوفة تالياً).

بخلاف المكونات الأخرى، هناك سمتين منفصلتين للأذونات يمكنك تعيينهما:

سمة android:readPermission تقيد من يمكنه القراءة من الموفر، وسمة android:writePermission تقيد من يمكنه الكتابه في الموفر.

لاحظ أنه إذا كان الموفر محمياً بكل من أذونات القراءة والكتابه، فإن إمتلاك أذن الكتابة فقط لا يعني أنه بإمكانك القراءة من الموفر.

يتم التحقق من الأذونات عند إسترجاعك للموفر أول مره (إذا لم يكن لديك أي أذن، يتم طرح SecurityException)، وعند تنفيذك للعمليات على الموفر.

إستخدام ()ContentResolver.query يتطلب إمتلاك أذن للقراءة؛ إستخدام ()ContentResolver.insert(), ContentResolver.update(), ContentResolver.delete يتطلب أذن للكتابه.

في جميع هذه الحالات، عدم امتلاك الأذن المطلوبة يؤدي إلى طرح SecurityException من الإستدعاء.

 

 

 

 

أذونات URI


نظام الأذن القياسي الموضح حتى الآن عادة ما يكون غير كافٍ عند إستخدامه مع موفري المحتوى.نظرة عامة على الأذونات نظرة عامة على الأذونات

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

المثال النموذجي هو مرفقات البريد الإلكتروني. الوصول إلى رسائل البريد الإلكتروني يجب حمايتها بواسطة أذونات، بما أنها بيانات مستخدم حساسه.

مع ذلك، لو كان URI لصورة مرفقة تم إعطاؤها لعارص الصور، لن يكون لدى عارض الصور ذاك أذن لفتح المرفق بما أنه لا يوجد سبب يجعله يحتفظ بأذن للوصول إلى كافة رسائل البريد الإلكتروني.

 

الحل لهذه المشكلة هو لكل أذونات URI:

عند بدء نشاط أو إسترجاع نتيجة لنشاط، يمكن للمستدعي تعيين
Intent.FLAG_GRANT_READ_URI_PERMISSION
و /أو
Intent.FLAG_GRANT_WRITE_URI_PERMISSION.

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

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

يمكن أن يكون هذا وسيلة رئيسية لتقليل الأذونات التي تحتاجها التطبيقات، فقط إلى تلك الأذونات المرتبطة بتفاعل التطبيق.

لإنشاء أكثر الإجراءات أماناً والتي تجعل التطبيقات الأخرى مسؤولة عن سلوكها بداخل تطبيقك، يجب عليك إستخدام أذونات بالغة الدقه في هذا الوضع و إعلان دعم تطبيقك لها بإستخدام سمة android:grantUriPermissions أو وسم <grant-uri-permissions>.

يمكنك العثور على مزيد من المعلومات في دوال Context.grantUriPermission(), Context.revokeUriPermission(), ()Context.checkUriPermission.

 

 

 

تنفيذ أذونات أخرى


يمكن تنفيذ أذونات عشوائيه بالغة الدقه في أي إستدعاء في الخدمه. يتم إنجاز هذا مع داله ()Context.checkCallingPermission.

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

لاحظ أنه لا يمكن استخدام هذا، إلا عند تنفيذك إستدعاء قادم من عملية أخرى، وعادة ما يتم ذلك من خلال واجهة IDL منشورة من خدمه ما، أو بطريقة أخرى تم منحها لعملية أخرى.

هناك عدة طرق مفيدة أخرى للتحقق من الأذونات. إذا كنت تملك معرف العمليه (PID) من عملية أخرى، يمكنك إستخدام داله ()Context.checkPermission للتحقق من أذن معرف العملية ذاك.

إذا كنت تملك اسم الحزمة لتطبيق آخر، يمكنك إستخدام الداله ()PackageManager.checkPermission لمعرفة ما إذا كان لدى تلك الحزمة أذن محدده.

 

 

 

ضبط الأذونات التلقائيه


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

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

يقرر الأندرويد ما إذا كان التطبيق يحتاج إلى أذن بناء على القيمة المقدمة في السمة targetSdkVersion.

إذا كانت القيمة أقل من الإصدار الذي أضيفت الأذن فيه، سيقوم الأندرويد بإضافة الأذن.

مثال، تم فرض أذن القراءة من الذاكرة الخارجية READ_EXTERNAL_STORAGE بدءاً من المستوى API 19 لتقييد الوصول إلى مساحة التخزين المشتركة.

إذا كانت نسخة targetSdkVersion هي 18 أو أقل، ستتم إضافة هذه الأذن إلى تطبيقك على الإصدارات الأحدث من الأندرويد.

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

 

 

 

مستويات الحمايه


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

هناك ثلاث مستويات للحماية تؤثر على التطبيقات الخارجيه: أذونات عاديه، موقعه، خطيرة.

 

 

الأذونات العاديه

 

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

إذا أعلن تطبيق في ملف ملف إيضاحه أنه بحاجة إلى أذن عاديه، يقوم النظام تلقائياً بمنح التطبيق تلك الأذن أثناء التثبيت.

لا يطلب النظام من المستخدم منح الأذونات العاديه، ولا يمكن للمستخدمين إلغاء هذه الأذونات.

بدءاً من أندرويد 9 (API 28)، تم تصنيف الأذونات التاليه بأنها أذونات عاديه PROTECTION_NORMAL:

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

 

 

الأذونات الموقعه

يمنح النظام أذونات التطبيق هذه أثناء التثبيت، ولكن فقط في حالة كان التطبيق الذي يحاول إستخدام الأذن موقعاً بنفس شهادة التطبيق الذي يحدد الأذن.

ملاحظه: بعض الأذونات الموقعه ليست للإستخدام من قبل التطبيقات الخارجيه.

بدءاً من أندرويد 8 (API 27)، الأذونات التاليه التي يمكن للتطبيقات الخارجية إستخدامها مصنفة كأذونات موقعه PROTECTION_SIGNATURE:

  • ربط خدمات إمكانية الوصول
  • ربط خدمات الملئ التلقائي
  • ربط خدمات الناقل
  • ربط خدمات الهدف المختار
  • ربط خدمات شروط الموفر
  • ربط جهاز المدير
  • ربط خدمة الحلم
  • ربط خدمة الإتصال
  • ربط داله الإدخال
  • ربط خدمة أجهزة midi (الواجهة الرقمية للآلات الموسيقيه)
  • ربط خدمة nfc (الإتصالات القريبه)
  • ربط خدمة الإشعارات الصوتيه
  • ربط خدمة الطباعه
  • ربط خدمة العروض
  • ربط خدمة الإتصالات
  • ربط خدمة النص
  • ربط إدخال التلفاز
  • ربط خدمة البريد الصوتي المرئي
  • ربط التفاعل الصوتي
  • ربط خدمة الشبكة الإفتراضية الخاصه
  • ربط خدمه مستمع الواقع الإفتراضي
  • ربط الخلفيه
  • تنظيف ذاكرة التطبيق
  • إدارة المستندات
  • قراءة البريد الصوتي
  • طلب حزم التثبيت
  • نافذة تنبيه النظام
  • إعدادات الكتابه
  • كتابة البريد الصوتي

 

 

الأذونات الخطرة

تغطي الأذونات الخطرة المناطق حيث يريد التطبيق بيانات أو مصادر تشتمل على معلومات خاصة بالمستخدم، أو قد تؤثر على البيانات المخزنة للمستخدم أو على تشغيل التطبيقات الأخرى.

مثال، القدرة على قراءة جهات إتصال المستخدم تعد أذونات خطيرة. إذا أعلن تطبيق أنه بحاجة إلى أذن خطيره، فيجب على المستخدم أن يمنح الأذن صراحة للتطبيق.

وحتى يوافق المستخدم على الأذن، لا يمكن لتطبيقك توفير الوظائف التي تعتمد على تلك الأذن.

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

للحصول على قائمة بالأذونات الخطرة ، أنظر الجدول 1 أدناه.

 

 

الأذونات الخاصه


هناك زوج من الأذونات التي لا تتصرف مثل الأذونات العادية والخطرة.

SYSTEM_ALERT_WINDOW و WRITE_SETTINGS وهما حساستان بشكلٍ خاص، لذا يجب ألا تستخدمهما معظم التطبيقات.

إذا أحتاج التطبيق لأحد هذه الأذونات، فيجب الإعلان عن الأذن في ملف الإيضاح، وإرسال غرض يطلب ترخيص من المستخدم.

يستجيب النظام للأغراض، بعرض شاشة إدارة تفصيليه للمستخدم.

للحصول على تفاصيل حول كيفية طلب هذه الأذونات، راجع الإدخالات المرجعيه نافذة تنبيه النظام و إعدادات الكتابة.

كافة الأذونات التي يوفرها الأندرويد يمكن العثور عليها في ملف إيضاح الأذونات.

 

 

 

مجموعات الأذونات


يتم تنظيم الأذونات في مجموعات مرتبطة بقدرات الجهاز أو خصائصه.

بموجب هذا النظام، طلبات الأذونات تعالج على مستوى المجموعة، والمجموعة الواحدة للأذونات تتوافق مع عدة إعلانات للأذونات في ملف إيضاح التطبيق.

مثال، مجموعة SMS تحتوي على إعلانات كلٍ من، قراءة SMS و إستلام SMS .

تجميع الأذونات في مجموعات تمكن المستخدم من إجراء المزيد من الخيارات المفيدة والمدروسه، من دون إرباكه بطلبات أذونات معقدة و تقنيه.

كافة أذونات الأندرويد الخطرة تنتمي إلى “مجموعات أذونات”.

 

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

1- إذا كان الجهاز يعمل بنظام أندرويد 6.0 (API 23) وكانت نسخة targetSdkVersion للتطبيق هي 23 أو أعلى، سيتم تطبيق السلوك التالي للنظام عندما يطلب تطبيقك أذن خطرة:نظرة عامة على الأذونات نظرة عامة على الأذونات

إذا كان التطبيق حالياً لا يمتلك أي أذونات في مجموعة الأذونات، سيعرض النظام مربع حوار “طلب الأذن” للمستخدم، واصفاً مجموعة الأذونات التي يريد التطبيق الوصول إليها.

مربع الحوار لا يصف الأذن المحدده بداخل هذه المجموعة. مثال، لو طلب التطبيق أذن READ_CONTACTS..نظرة عامة على الأذونات نظرة عامة على الأذونات

فإن مربع حوار النظام، سيذكر فقط أن التطبيق يحتاج للوصول إلى جهات الإتصال في الجهاز.

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

2- إذا سمح التطبيق بأذن خطرة أخرى بالفعل، في نفس مجموعة الأذونات، سيمنح النظام الأذن على الفور، دون حدوث أي تفاعل مع المستخدم.

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

تحذير: النسخ المستقبليه من أندرويد SDK قد تقوم بنقل أذونات معينه من مجموعة إلى أخرى. لهذا، لا تؤسس منطق تطبيقك على تراكيب مجموعات الأذونات هذه.

مثال، أذن قراءة جهات الإتصال موجودة في نفس مجموعة أذن الكتابه إلى جهات الإتصال بدءاً من أندرويد 8.1 (API 27).

فإذا طلب تطبيقك أذن قراءة جهات الإتصال، ثم طلب أذن الكتابه إلى جهات الإتصال، فلا تفترض أن النظام سيمنح أذن الكتابة إلى جهات الإتصال تلقائياً.

إذا كان الجهاز يعمل بأندرويد 5.1 (API 22) أو أقل، أو كانت نسخة التطبيق targetSdkVersion هي 22 أو أقل، سيطلب النظام من المستخدم منح الأذونات أثناء التثبيت.

مرة أخرى، النظام يخبر المستخدم فقط بمجموعات الأذونات التي يحتاجها التطبيق، وليس الأذونات الفرديه.

مثال، عندما يطلب التطبيق أذن قراءة جهات الإتصال، سيدرج مربع حوار التثبيت، مجموعة جهات الإتصال.

عندما يقبلها المستخدم، يتم منح التطبيق أذن قراءة جهات الإتصال فقط.

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

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

جدول 1. الأذونات الخطرة و مجموعات الأذونات

مجموعة الأذونات الأذونات
CALENDAR التقويم
  • READ_CALENDAR
  • WRITE_CALENDAR
CALL_LOG سجل المكالمات
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • PROCESS_OUTGOING_CALLS
CAMERA الكاميرا CAMERA
CONTACTS جهات الإتصال
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
LOCATION الموقع
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
MICROPHONE المايكروفون RECORD_AUDIO
PHONE الهاتف
  • READ_PHONE_STATE
  • READ_PHONE_NUMBERS
  • CALL_PHONE
  • ANSWER_PHONE_CALLS
  • ADD_VOICEMAIL
  • USE_SIP
SENSORS أجهزة الإستشعار BODY_SENSORS
SMS الرسائل القصيره
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
STORAGE التخزين
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE

 

 

 

 

عرض أذونات التطبيق


نظرة عامة على الأذونات نظرة عامة على الأذونات نظرة عامة على الأذونات نظرة عامة على الأذونات نظرة عامة على الأذونات نظرة عامة على الأذونات
يمكنك عرض جميع الأذونات المعرفة حالياً في النظام عن طريق الإعدادت والأمر

adb shell pm list permissions في موجه الأوامر.

لإستخدام الإعدادات، أذهب إلى الإعدادات > التطبيقات. أختر تطبيقاً ثم أنتقل لأسفل لترى الأذونات التي يستخدمها التطبيق.

بالنسبة للمطورين، الخيار ‘adb ‘-s يعرض الأذونات بشكلٍ مشابه لما يراه المستخدم:

$ adb shell pm list permissions -s
All Permissions:

Network communication: view Wi-Fi state, create Bluetooth connections, full
internet access, view network state

Your location: access extra location provider commands, fine (GPS) location,
mock location sources for testing, coarse (network-based) location

Services that cost you money: send SMS messages, directly call phone numbers

...

 

 

يمكنك أيضاً إستخدام الخيار adb -g لمنح كافة الأذونات تلقائياً عند تثبيت أحد التطبيقات على المحاكي أو جهاز الإختبار:

$ adb shell install -g MyApp.apk

 

 

 

مصادر إضافيه


 

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات