تقديم أذونات التطبيقات

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

تعتمد عملية طلب الإذن على نوع الإذن:

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

إضافة بيان إلى بيان التطبيق

لإعلان إذن قد يطلبه تطبيقك، يُرجى تضمين عنصر <uses-permission> المناسب في ملف البيان لتطبيقك. على سبيل المثال، يتضمّن التطبيق الذي يحتاج إلى الوصول إلى الكاميرا هذا الخط في AndroidManifest.xml:

<manifest ...>
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

تحديد أنّ الأجهزة اختيارية

تتيح بعض الأذونات، مثل CAMERA، لتطبيقك الوصول إلى أجزاء من الأجهزة لا تتوفّر إلا لبعض أجهزة Android. إذا أعلن تطبيقك عن أحد هذه الأذونات المرتبطة بالأجهزة، عليك مراعاة ما إذا كان لا يزال بالإمكان تشغيله على جهاز لا تتوفّر عليه هذه الأجهزة. في معظم الحالات، تكون الأجهزة اختيارية، لذا من الأفضل الإشارة إلى أنّ الجهاز اختياري من خلال ضبط android:required على false في بيان <uses-feature>، كما هو موضّح في مقتطف الرمز التالي من ملف AndroidManifest.xml:

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

تحديد مدى توفُّر الأجهزة

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

Kotlin

// Check whether your app is running on a device that has a front-facing camera.
if (applicationContext.packageManager.hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

Java

// Check whether your app is running on a device that has a front-facing camera.
if (getApplicationContext().getPackageManager().hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

تأكيد الأذونات حسب مستوى واجهة برمجة التطبيقات

للإعلان عن إذن فقط على الأجهزة التي تتوافق مع أذونات وقت التشغيل، أي الأجهزة التي تعمل بالإصدار 6.0 من Android (المستوى 23 لواجهة برمجة التطبيقات) أو أعلى، يجب تضمين العنصر <uses-permission-sdk-23> بدلاً من العنصر <uses-permission>.

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

على سبيل المثال، قد يعرض تطبيقك محتوى وسائط، مثل الصور أو الفيديوهات، الذي أنشأه المستخدم أثناء استخدامه. وفي هذه الحالة، لن تحتاج إلى استخدام الإذن READ_EXTERNAL_STORAGE على الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android 10 (المستوى 29 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، طالما أنّ تطبيقك يستهدف الإصدار Android 10 أو الإصدارات الأحدث. ومع ذلك، للتوافق مع الأجهزة القديمة، يمكنك تقديم بيان الإذن READ_EXTERNAL_STORAGE وضبط android:maxSdkVersion على القيمة 28.