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

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

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

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

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