כפי שצוין בתהליך העבודה לגבי שימוש ב- הרשאות, אם האפליקציה מבקשת ההרשאות, עליך להצהיר על ההרשאות האלה בקובץ המניפסט של האפליקציה. ההצהרות האלה עוזרות לחנויות האפליקציות ולמשתמשים להבין את קבוצת ההרשאות שהאפליקציה שלכם עשויה לבקש.
התהליך של בקשת הרשאה תלוי בסוג הרשאה:
- אם ההרשאה היא בזמן התקנה הרשאה רגילה, כמו או הרשאת חתימה, ההרשאה מוענקת באופן אוטומטי בזמן ההתקנה.
- אם ההרשאה היא סביבת זמן ריצה הרשאה או הרשאה מיוחדת , ואם האפליקציה במכשיר שמותקנת בו גרסת Android 6.0 (API ברמה 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. }
הצהרה על הרשאות לפי רמת API
כדי להצהיר על הרשאה רק במכשירים שתומכים בהרשאות בתחילת ההפעלה –
מכשירים שבהם פועלת גרסת Android 6.0 (רמת API 23) ואילך — כוללים את
<uses-permission-sdk-23>
במקום
רכיב <uses-permission>
.
כשמשתמשים באחד מהאלמנטים האלה, אפשר להגדיר את המאפיין maxSdkVersion
כדי לציין שמכשירים שמותקנת בהם גרסת Android ישנה יותר
עם הערך שצוין לא דרושה הרשאה מסוימת. כך אפשר
למנוע הרשאות לא נחוצות ועדיין לשמור על תאימות
למכשירים ישנים יותר.
לדוגמה, האפליקציה עשויה להציג תוכן מדיה, כמו תמונות
או סרטונים, שנוצרו על ידי המשתמש בזמן השימוש באפליקציה. במקרה כזה,
לא צריך להשתמש
READ_EXTERNAL_STORAGE
במכשירים
מערכת ההפעלה Android בגרסה 10 (רמת API 29) ואילך, כל עוד האפליקציה מטרגטת
Android מגרסה 10 ואילך. עם זאת, לצורך תאימות למכשירים ישנים יותר,
אפשר להצהיר על ההרשאה READ_EXTERNAL_STORAGE
ולהגדיר את
android:maxSdkVersion
עד 28.