تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
كما ذكرنا في سير العمل لاستخدام
الأذونات، إذا كان تطبيقك يطلب الحصول على تطبيق
يجب الإفصاح عن هذه الأذونات في ملف البيان لتطبيقك.
تساعد نماذج البيانات هذه متاجر التطبيقات والمستخدمين في فهم مجموعة الأذونات.
التي قد يطلبها تطبيقك.
وتعتمد عملية طلب الإذن على نوع
الإذن:
إذا كان الإذن عبارة عن مدة تثبيت
إذن، مثل إذن الوصول العادي
إذن أو إذن توقيع، يتم منح الإذن تلقائيًا على
وقت التثبيت
إذا كان الإذن وقت تشغيل
إذن أو خاص
إذن، وما إذا كان تطبيقك
المثبَّتة على جهاز يعمل بالإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب
طلب إذن التشغيل أو خاص
الإذن بنفسك.
إضافة بيان إلى بيان التطبيق
للإفصاح عن إذن قد يطلبه تطبيقك، يجب تضمين
العنصر <uses-permission> في
ملف البيان لتطبيقك. على سبيل المثال، تطبيق يحتاج إلى الوصول إلى الكاميرا
يحتوي هذا السطر على هذا السطر في AndroidManifest.xml:
تتضمن بعض الأذونات، مثل
CAMERA، دع تطبيقك
الوصول إلى الأجهزة التي لا تمتلكها سوى بعض أجهزة Android. إذا كان تطبيقك
إلى أحد هذه الأجهزة المرتبطة بالأجهزة
الأذونات،
وما إذا كان بالإمكان تشغيل تطبيقك على جهاز لا يتضمّن هذه السمة
الأجهزة. في معظم الحالات، تكون الأجهزة اختيارية، ومن الأفضل توضيح
الجهاز اختياريًا من خلال ضبط android:required على false في
بيان <uses-feature>، باعتباره
كما هو موضح في مقتطف الرمز التالي من ملف AndroidManifest.xml:
إذا أعلنت أنّ الأجهزة اختيارية، من الممكن تشغيل تطبيقك على
جهاز لا يتضمن ذلك الجهاز. للتحقق مما إذا كان الجهاز يحتوي على
قطعة من الأجهزة، استخدم
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.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Declare app permissions\n\nAs mentioned in the [workflow for using\npermissions](/training/basics/permissions#workflow), if your app requests app\npermissions, you must declare these permissions in your app's manifest file.\nThese declarations help app stores and users understand the set of permissions\nthat your app might request.\n\nThe process to request a permission depends on the type of\npermission:\n\n- If the permission is an [install-time\n permission](/guide/topics/permissions/overview#install-time), such as a normal permission or a signature permission, the permission is granted automatically at install time.\n- If the permission is a [runtime\n permission](/guide/topics/permissions/overview#runtime) or [special\n permission](/guide/topics/permissions/overview#special), and if your app is installed on a device that runs Android 6.0 (API level 23) or higher, you must request the [runtime permission](/training/permissions/requesting) or [special\n permission](/training/permissions/requesting-special) yourself.\n\n| **Caution:** Carefully consider which permissions to declare in your app's manifest. Add only the permissions that your app needs. For each permission that your app requests, make sure that it offers clear benefits to users and that the request is done in a way that's obvious to them.\n\nAdd declaration to app manifest\n-------------------------------\n\nTo declare a permission that your app might request, include the appropriate\n[`\u003cuses-permission\u003e`](/guide/topics/manifest/uses-permission-element) element in\nyour app's manifest file. For example, an app that needs to access the camera\nhas this line in `AndroidManifest.xml`: \n\n```xml\n\u003cmanifest ...\u003e\n \u003cuses-permission android:name=\"android.permission.CAMERA\"/\u003e\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n\u003c/manifest\u003e\n```\n\nDeclare hardware as optional\n----------------------------\n\nSome permissions, such as\n[`CAMERA`](/reference/android/Manifest.permission#CAMERA), let your app\naccess pieces of hardware that only some Android devices have. If your app\ndeclares one of these [hardware-associated\npermissions](/guide/topics/manifest/uses-feature-element#permissions-features),\nconsider whether your app can still run on a device that doesn't have that\nhardware. In most cases, hardware is optional, so it's better to declare the\nhardware as optional by setting `android:required` to `false` in your\n[`\u003cuses-feature\u003e`](/guide/topics/manifest/uses-feature-element) declaration, as\nshown in the following code snippet from an `AndroidManifest.xml` file: \n\n```xml\n\u003cmanifest ...\u003e\n \u003capplication\u003e\n ...\n \u003c/application\u003e\n \u003cuses-feature android:name=\"android.hardware.camera\"\n android:required=\"false\" /\u003e\n\u003cmanifest\u003e\n```\n| **Caution:** If you don't set `android:required` to `false` in your `\u003cuses-feature\u003e` declaration, Android assumes that the hardware is required for your app to run. The system then [prevents some devices from being able to install your\n| app](/guide/topics/manifest/uses-feature-element#market-feature-filtering).\n\n### Determine hardware availability\n\nIf you declare hardware as optional, it's possible for your app to run on a\ndevice that doesn't have that hardware. To check whether a device has a specific\npiece of hardware, use the\n[`hasSystemFeature()`](/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String))\nmethod, as shown in the following code snippet. If the hardware isn't available,\ngracefully disable that feature in your app. \n\n### Kotlin\n\n```kotlin\n// Check whether your app is running on a device that has a front-facing camera.\nif (applicationContext.packageManager.hasSystemFeature(\n PackageManager.FEATURE_CAMERA_FRONT)) {\n // Continue with the part of your app's workflow that requires a\n // front-facing camera.\n} else {\n // Gracefully degrade your app experience.\n}\n```\n\n### Java\n\n```java\n// Check whether your app is running on a device that has a front-facing camera.\nif (getApplicationContext().getPackageManager().hasSystemFeature(\n PackageManager.FEATURE_CAMERA_FRONT)) {\n // Continue with the part of your app's workflow that requires a\n // front-facing camera.\n} else {\n // Gracefully degrade your app experience.\n}\n```\n\nDeclare permissions by API level\n--------------------------------\n\nTo declare a permission only on devices that support runtime permissions---that\nis, devices that run Android 6.0 (API level 23) or higher---include the\n[`\u003cuses-permission-sdk-23\u003e`](/guide/topics/manifest/uses-permission-sdk-23-element)\nelement instead of the\n[`\u003cuses-permission\u003e`](/guide/topics/manifest/uses-permission-element) element.\n\nWhen using either of these elements, you can set the `maxSdkVersion` attribute\nto indicate that devices running a version of Android higher than\nthe specified value don't need a particular permission. This lets you\neliminate unnecessary permissions while still providing compatibility\nfor older devices.\n\nFor example, your app might show media content, such as photos\nor videos, that the user created while in your app. In this situation,\nyou don't need to use the\n[`READ_EXTERNAL_STORAGE`](https://developer.android.com/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE)\npermission on devices that\nrun Android 10 (API level 29) or higher, as long as your app targets\nAndroid 10 or higher. However, for compatibility with older devices,\nyou can declare the `READ_EXTERNAL_STORAGE` permission and set the\n`android:maxSdkVersion` to 28."]]