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

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

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

  • إذا كان الإذن عبارة عن مدة تثبيت إذن، مثل إذن الوصول العادي إذن أو إذن توقيع، يتم منح الإذن تلقائيًا على وقت التثبيت
  • إذا كان الإذن وقت تشغيل إذن أو خاص إذن، وما إذا كان تطبيقك المثبَّتة على جهاز يعمل بالإصدار 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.
}

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

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

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

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