הסבר על גישה למידע רגיש יותר

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

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

בפרט, חשוב לוודא שביצעתם את הפעולות הבאות באפליקציה:

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

מרכז בקרת הפרטיות

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

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

הצגת ההסבר לגישה לנתונים

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

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

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

    אם האפליקציה שלכם מטרגטת ל-Android מגרסה 12 ואילך, אתם צריכים להגדיר ערך באופן מפורש למאפיין android:exported.

  2. מוסיפים את מסנן ה-Intent הבא לפעילות החדשה:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. קובעים אילו פעילויות יופיעו בנימוק לגישה לנתונים. לדוגמה, אפשר להציג את האתר של האפליקציה או מאמר במרכז העזרה. כדי לספק הסבר מפורט יותר על סוגי הנתונים שהאפליקציה ניגשת אליהם ועל הזמן שבו הגישה התרחשה, צריך לטפל בתוספים שהמערכת כוללת כשהיא מפעילה את הכוונה לשימוש בהרשאה:

בהתאם למסנני הכוונות שמוסיפים, המשתמשים רואים סמל מידע לצד שם האפליקציה במסכים מסוימים:

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

כשמשתמשים בוחרים בסמל הזה, מופעלת פעילות ההסבר של האפליקציה.

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

אינדיקטורים

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

זיהוי המיקום של האינדיקטורים במסך

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

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

החלפת מצב

התוויות של פקדי ההגדרות המהירות הן 'גישה למצלמה' ו'גישה למיקרופון'.
איור 3. מתגי גישה למיקרופון ולמצלמה ב ההגדרות המהירות.

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

המתגים של המצלמה והמיקרופון משפיעים על כל האפליקציות במכשיר:

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

כשהמשתמש משבית את הגישה למצלמה או למיקרופון, ואז מפעיל אפליקציה שזקוקה לגישה למידע מהמצלמה או מהמיקרופון, המערכת מזכירה למשתמש שהמתג להשבתה של הגישה למצלמה או למיקרופון בכל המכשיר מושבת.

בדיקת התמיכה במכשיר

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

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);