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

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

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

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

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

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

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

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

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

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

adb shell pm list permissions -g -d

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

הגבלות קשות ורכות ב- Android 10

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

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

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

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

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

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

דרישות

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

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

העברת הרשאות

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

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

שילוב

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

מעדכן אפליקציות

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

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

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

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

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

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

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

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

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

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

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

יצירת יוצאי דופן

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

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

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

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

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

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

בדיקת הרשאות

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