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

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

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

באופן ספציפי, חשוב לוודא שאתם מבצעים את הפעולות הבאות באפליקציה:

  • צריך להמתין עד שהמשתמש יעניק לאפליקציה את ההרשאה 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 של השימוש בהרשאה:

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

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

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

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

אינדיקטורים

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

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

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

Kotlin

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

מתגים

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