הרשאות זמן ריצה

באנדרואיד 6.0 ומעלה, מודל ההרשאות של אפליקציות אנדרואיד נועד להפוך את ההרשאות למובנות, שימושיות ומאובטחות יותר עבור המשתמשים. המודל העביר אפליקציות אנדרואיד הדורשות הרשאות מסוכנות (ראה הרשאות מושפעות ) ממודל הרשאות בזמן ההתקנה למודל הרשאות זמן ריצה :

  • הרשאות בזמן ההתקנה

    ( Android 5.1 ומטה ) משתמשים מעניקים הרשאות מסוכנות לאפליקציה כשהם מתקינים או מעדכנים את האפליקציה. יצרני וספקי התקנים יכולים להתקין מראש אפליקציות עם הרשאות מוענקות מראש מבלי להודיע ​​למשתמש.

  • הרשאות זמן ריצה

    ( אנדרואיד 6.0 - 9 ) משתמשים מעניקים הרשאות מסוכנות לאפליקציה כשהאפליקציה פועלת. מתי מתבקשות הרשאות (כגון כאשר האפליקציה מופעלת או כאשר המשתמש ניגש לתכונה ספציפית) תלוי באפליקציה, אך המשתמש מעניק/שולל גישה לאפליקציה לקבוצות הרשאות ספציפיות. יצרני ציוד מקורי/ספקים יכולים להתקין מראש אפליקציות, אבל לא יכולים להעניק הרשאות מראש אלא אם כן הם עוברים את תהליך החריגה. (ראה יצירת חריגים .)

    ( אנדרואיד 10 ) משתמשים רואים שקיפות מוגברת ויש להם שליטה לאילו אפליקציות יש הרשאות זמן ריצה לזיהוי פעילות (AR). משתמשים מתבקשים על ידי תיבת הדו- שיח של הרשאות זמן ריצה לאפשר תמיד, לאפשר בזמן השימוש או לדחות הרשאות. בשדרוג מערכת ההפעלה לאנדרואיד 10, ההרשאות שניתנו לאפליקציות נשמרות, אך המשתמשים יכולים להיכנס להגדרות ולשנות אותן.

הרשאות זמן ריצה מונעות מאפליקציות לקבל גישה לנתונים פרטיים ללא הסכמת המשתמש, ומספקות להן הקשר וניראות נוספים לסוגי ההרשאות שיישומים מבקשים או שהוענקו להם. מודל זמן הריצה מעודד מפתחים לעזור למשתמשים להבין מדוע יישומים דורשים את ההרשאות המבוקשות, ומספק שקיפות רבה יותר כך שמשתמשים יכולים לקבל החלטות טובות יותר לגבי הענקתן או שלילתן.

הרשאות מושפעות

אנדרואיד 6.0 ואילך דורש הרשאות מסוכנות כדי להשתמש במודל הרשאות זמן ריצה. הרשאות מסוכנות הן הרשאות בסיכון גבוה יותר (כגון READ_CALENDAR ) המעניקות לאפליקציות מבקשות גישה לנתוני משתמש פרטיים, או שליטה על מכשיר, מה שעלול להשפיע לרעה על המשתמש. כדי להציג רשימה של הרשאות מסוכנות, הפעל את הפקודה:

adb shell pm list permissions -g -d

אנדרואיד 6.0 ואילך לא משנה את ההתנהגות של הרשאות רגילות . כל אלו הן הרשאות לא מסוכנות כולל הרשאות רגילות, מערכת וחתימות. הרשאות רגילות הן הרשאות בסיכון נמוך יותר (כגון SET_WALLPAPER ) המעניקות ליישומים המבקשים גישה לתכונות מבודדות ברמת האפליקציה עם סיכון מינימלי ליישומים אחרים, למערכת או למשתמש. כמו במהדורות אנדרואיד 5.1 ומטה, המערכת מעניקה באופן אוטומטי הרשאות רגילות לאפליקציה המבקשת בעת ההתקנה ואינה מבקשת מהמשתמש אישור. לפרטים על הרשאות, עיין בתיעוד הרכיב <permission> .

הגבלות קשות ורכות באנדרואיד 10

בנוסף להיותה מסוכן, הרשאה יכולה להיות מוגבלת קשות או רך. בכל מקרה, ההרשאה המוגבלת חייבת להיות גם ברשימת ההיתרים. הגבלות קשות שאינן ברשימת ההלבנה מתנהגות בצורה שונה מהגבלות רכות שאינן מובנות:

  • ( הגבלות קשות ) לא ניתן להעניק לאפליקציות הרשאות שאינן ברשימת ההיתרים.
  • ( הגבלות רכות ) אפליקציות ללא רשימת היתרים מתנהגות בהתאם להרשאה הספציפית שהן מבקשות. ההתנהגות מתוארת בתיעוד הציבורי לאישור המבוקש.

בעת התקנת אפליקציה, המתקין (כגון חנות Google Play) עשוי לבחור לא לרשום את ההרשאות המוגבלות עבור האפליקציה. ההרשאות מוגבלות על ידי הפלטפורמה וניתנות להענקה רק אם אפליקציה עומדת בקריטריונים מיוחדים לפי מדיניות הפלטפורמה. דוגמאות לסוגי הרשאות מוגבלות כוללות הרשאות SMS ויומן שיחות.

רישום היתר מתרחש במהלך ההתקנה ומתי

  • אפליקציה כבר מותקנת במהלך שדרוג אנדרואיד 9 ל-10.
  • הרשאה ניתנת מראש או אפליקציה מותקנת מראש.
  • נדרשת הרשאה לתפקיד שכבר הוגדר לרשימת ההיתרים של ההרשאה.
  • המתקין (כגון חנות Google Play) מסמן את ההרשאה כרשימה הלבנה.

משתמשים לא יכולים לרשום הרשאות היתר באופן ידני.

דרישות

מודל הרשאת זמן הריצה חל על כל האפליקציות, כולל אפליקציות מותקנות מראש ואפליקציות שנשלחו למכשיר כחלק מתהליך ההגדרה. דרישות תוכנת היישום כוללות:

  • מודל הרשאת זמן הריצה חייב להיות עקבי בכל המכשירים שבהם פועל Android 6.0 ואילך. זה נאכף על ידי מבחני Android Compatibility Test Suite (CTS).
  • אפליקציות חייבות לבקש מהמשתמשים להעניק הרשאות לאפליקציה בזמן ריצה. לפרטים, ראה עדכון יישומים . חריגים מוגבלים עשויים להינתן ליישומי ברירת מחדל ולמטפלים המספקים פונקציונליות בסיסית של המכשיר הבסיסית לפעולה הצפויה של המכשיר. (לדוגמה, לאפליקציית חייגן המוגדרת כברירת מחדל של המכשיר לטיפול ב- ACTION_CALL עשויה להיות גישה להרשאת טלפון.) לפרטים, ראה יצירת חריגים .
  • אפליקציות שנטענו מראש בעלות הרשאות מסוכנות חייבות למקד לרמת API 23 ולשמור על מודל הרשאת זמן הריצה. כלומר, זרימת ממשק המשתמש במהלך התקנת האפליקציה אינה חייבת לסטות מהטמעת AOSP של PermissionController, משתמשים יכולים לבטל הרשאות מסוכנות של אפליקציות מותקנות מראש וכן הלאה.
  • יישומים חסרי ראש חייבים להשתמש בפעילות כדי לבקש הרשאות או כדי לשתף UID עם אפליקציה אחרת שיש לה את ההרשאות הנדרשות. לפרטים, ראה יישומים ללא ראש .

העברת הרשאות

ההרשאות שניתנו ליישומים ב-Android 5.x נשארות ניתנות לאחר עדכון ל-Android 6.0 ומעלה, אך משתמשים יכולים לבטל את ההרשאות הללו בכל עת.

בעדכון אנדרואיד 9-to-10, כל ההרשאות המוגבלות קשות נכנסות לרשימה הלבנה. לפרטים על הטמעת הרשאות פיצול חזית/רקע, ראה שינוי פרטיות ב-Android 10 , החל בבקשת מיקום רקע .

שילוב

בעת שילוב מודל הרשאות זמן הריצה של האפליקציה עבור אנדרואיד 6.0 ואילך, עליך לעדכן אפליקציות מותקנות מראש כדי שיעבדו עם הדגם החדש. אתה יכול גם להגדיר חריגים עבור אפליקציות שהן המטפלים/ספקי ברירת המחדל של פונקציונליות הליבה, להגדיר הרשאות מותאמות אישית ולהתאים אישית את ערכת הנושא המשמשת באפליקציית PermissionController .

עדכון יישומים

יישומים בתמונת המערכת ויישומים שהותקנו מראש אינם הרשאות מוענקות אוטומטית מראש. אנו ממליצים לך לעבוד עם מפתחי אפליקציות שהותקנו מראש (OEM, ספק וצד שלישי) כדי לבצע את השינויים הנדרשים באפליקציה באמצעות הנחיות למפתחים . באופן ספציפי, עליך לוודא שיישומים שהותקנו מראש ישתנו כדי למנוע קריסות ובעיות אחרות כאשר משתמשים מבטלים הרשאות.

יישומים טעונים מראש

ב-Android 9 ומטה, אפליקציות טעונות מראש המשתמשות בהרשאות מסוכנות חייבות למקד לרמת API 23 ומעלה, ולשמור על מודל ההרשאות של Android 6.0 ומעלה AOSP. לדוגמה, זרימת ממשק המשתמש במהלך התקנת אפליקציה אינה חייבת לסטות מהטמעת AOSP של PermissionController . משתמשים יכולים אפילו לבטל את ההרשאות המסוכנות של אפליקציות מותקנות מראש.

באנדרואיד 6.0 עד 9, חלק מההרשאות ניתנות במהלך זרימת ההתקנה. עם זאת, החל מ-10, זרימת ההתקנה (המבוצעת על ידי אפליקציית Package Installer ) היא פונקציה נפרדת מהענקת הרשאות (באפליקציית Permission Controller ).

יישומים ללא ראש

רק פעילויות יכולות לבקש הרשאות. שירותים לא יכולים לבקש הרשאות ישירות.

  • באנדרואיד 5.1 ואילך, אפליקציות חסרות ראש יכולות לבקש הרשאות בעת התקנתן, או אם הן הותקנו מראש ללא שימוש בפעילות.
  • באנדרואיד 6.0 ואילך, יישומים ללא ראש חייבים להשתמש באחת מהשיטות הבאות כדי לבקש הרשאות:
    • הוסף פעילות כדי לבקש הרשאות. (זו השיטה המועדפת.)
    • שתף UID עם יישום אחר שיש לו את ההרשאות הדרושות. השתמש בשיטה זו רק כאשר אתה צריך את הפלטפורמה כדי לטפל במספר APKs כיישום יחיד.

המטרה היא להימנע מבלבול של משתמשים עם בקשות הרשאה המופיעות מחוץ להקשר.

התאמה אישית של ממשק המשתמש של PackageInstaller

אם תרצה, תוכל להתאים אישית את ערכת הנושא של ממשק המשתמש של הרשאות על ידי עדכון ערכות נושא ברירת המחדל של המכשיר ( Theme.DeviceDefault.Settings ו- Theme.DeviceDefault.Light.Dialog.NoActionBar ) המשמשים את PackageInstaller. עם זאת, מכיוון שעקביות היא קריטית עבור מפתחי אפליקציות, אינך יכול להתאים אישית את המיקום, המיקום והכללים של מועד הופעת ממשק המשתמש של ההרשאות.

כדי לכלול מחרוזות עבור שפות נוספות, תרום את המחרוזות ל-AOSP.

יצירת חריגים

אתה יכול להעניק הרשאות מראש ליישומים שהם מטפלים או ספקי ברירת מחדל עבור פונקציונליות ליבה של מערכת ההפעלה באמצעות המחלקה DefaultPermissionGrantPolicy.java ב-PackageManager. דוגמאות:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

הגדרת הרשאות מותאמות אישית

אתה יכול להגדיר הרשאות וקבוצות מותאמות אישית כרגילות או מסוכנות ולהוסיף הרשאות ספציפיות ל-OEM/ספק לקבוצות הרשאות קיימות, בדיוק כפי שאפשר היה ב-Android 5.x ובגרסאות קודמות.

באנדרואיד 6.0 ואילך, אם אתה מוסיף הרשאה מסוכנת חדשה, יש לטפל בה באותו אופן כמו הרשאות מסוכנות אחרות (מתבקשות בזמן ריצה של האפליקציה וניתנות לביטול על ידי המשתמשים). במיוחד:

  • אתה יכול להוסיף הרשאות חדשות לקבוצה נוכחית, אבל אתה לא יכול לשנות את מיפוי AOSP של הרשאות מסוכנות וקבוצות הרשאות מסוכנות. (במילים אחרות, לא ניתן להסיר הרשאה מקבוצה ולהקצות לקבוצה אחרת).
  • ניתן להוסיף קבוצות הרשאות חדשות באפליקציות המותקנות במכשיר, אך לא ניתן להוסיף קבוצות הרשאות חדשות במניפסט הפלטפורמה.

בדיקת הרשאות

אנדרואיד כולל בדיקות Compatibility Test Suite (CTS) המוודאות שהרשאות בודדות ממופה לקבוצות הנכונות. עמידה במבחנים אלו היא דרישה עבור תאימות CTS ל-Android 6.0 ואילך.