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

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

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

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

  • צריך להמתין עד שהמשתמש יעניק לאפליקציה את ההרשאה 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. קובעים אילו פעילויות יופיעו בנימוק לגישה לנתונים. לדוגמה, אפשר להציג את האתר של האפליקציה או מאמר במרכז העזרה. כדי לספק הסבר מפורט יותר על סוגי הנתונים שהאפליקציה ניגשת אליהם, וגם על מועד הגישה, צריך לטפל בתוספים שהמערכת כוללת כשהיא מפעילה את הכוונה לשימוש בהרשאה:

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

  • אם מוסיפים את מסנן הכוונות שמכיל את הפעולה 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
}

החלפת מצב

הכפתורים בהגדרות המהירות נקראים &#39;גישה למצלמה&#39; ו&#39;גישה למיקרופון&#39;.
איור 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);