ההרשאות שקשורות למיקום, למיקרופון ולמצלמה נותנות לאפליקציה גישה למידע רגיש במיוחד על המשתמשים. הפלטפורמה כוללת כמה מנגנונים, שמתוארים בדף הזה, כדי לעזור למשתמשים לקבל מידע ולשלוט באפליקציות שיכולות לגשת למיקום, למיקרופון ולמצלמה.
התכונות האלה של המערכת לשמירה על הפרטיות לא אמורות להשפיע על האופן שבו האפליקציה מטפלת בהרשאות שקשורות למיקום, למיקרופון ולמצלמה, כל עוד אתם פועלים לפי השיטות המומלצות לשמירה על הפרטיות.
באופן ספציפי, חשוב לוודא שאתם מבצעים את הפעולות הבאות באפליקציה:
- צריך להמתין עד שהמשתמש יעניק לאפליקציה את ההרשאה
CAMERA, ורק אז לגשת למצלמה של המכשיר. - צריך להמתין עד שהמשתמש יעניק לאפליקציה את ההרשאה
RECORD_AUDIO, ורק אז לגשת למיקרופון של המכשיר. - צריך להמתין עד שהמשתמש יבצע פעולה בתכונה באפליקציה שדורשת מיקום, ורק אז לבקש את ההרשאה
ACCESS_COARSE_LOCATIONאו את ההרשאהACCESS_FINE_LOCATION, כפי שמתואר במדריך בנושא בקשת הרשאות מיקום. - צריך לחכות עד שהמשתמש ייתן לאפליקציה את ההרשאה
ACCESS_COARSE_LOCATIONאו את ההרשאהACCESS_FINE_LOCATIONלפני שמבקשים את ההרשאהACCESS_BACKGROUND_LOCATION.
מרכז הבקרה להגדרות הפרטיות
במכשירים נתמכים עם Android מגרסה 12 ואילך, מופיע מסך של מרכז בקרת הפרטיות בהגדרות המערכת. במסך הזה, המשתמשים יכולים לגשת למסכים נפרדים שבהם מוצג מתי אפליקציות ניגשות למידע על המיקום, המצלמה והמיקרופון. בכל מסך מוצג ציר זמן של המועדים שבהם אפליקציות שונות ניגשו לסוג מסוים של נתונים. באיור 1 מוצג ציר הזמן של הגישה לנתוני המיקום.
הצגת הנימוק לגישה לנתונים
האפליקציה יכולה לספק למשתמשים הסבר כדי לעזור להם להבין למה היא ניגשת למידע על המיקום, המצלמה או המיקרופון. ההסבר הזה יכול להופיע במסך החדש של מרכז הבקרה להגדרות הפרטיות, במסך ההרשאות של האפליקציה או בשניהם.
כדי להסביר למה האפליקציה ניגשת למידע על המיקום, המצלמה והמיקרופון, צריך לבצע את הפעולות הבאות:
מוסיפים פעילות שכשהיא מתחילה, היא מספקת הסבר כלשהו לסיבה שהאפליקציה מבצעת סוג מסוים של פעולת גישה לנתונים. בפעילות הזו, מגדירים את המאפיין
android:permissionלערךSTART_VIEW_PERMISSION_USAGE.אם האפליקציה מטרגטת ל-Android מגרסה 12 ואילך, צריך להגדיר במפורש ערך למאפיין
android:exported.מוסיפים את מסנן ה-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>
מחליטים מה הפעילות של ההסבר על הגישה לנתונים צריכה להציג. לדוגמה, אתם יכולים להציג את אתר האפליקציה או מאמר במרכז העזרה. כדי לספק הסבר מפורט יותר על סוגי הנתונים שהאפליקציה ניגשת אליהם, וגם על מועד הגישה, צריך לטפל בתוספות שהמערכת כוללת כשהיא מפעילה את ה-Intent של השימוש בהרשאה:
- אם המערכת מפעילה את
ACTION_VIEW_PERMISSION_USAGE, האפליקציה יכולה לאחזר ערך שלEXTRA_PERMISSION_GROUP_NAME. - אם המערכת מפעילה את
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD, האפליקציה יכולה לאחזר ערכים שלEXTRA_PERMISSION_GROUP_NAME,EXTRA_ATTRIBUTION_TAGS,EXTRA_START_TIMEו-EXTRA_END_TIME.
- אם המערכת מפעילה את
בהתאם למסנני ה-Intent שתוסיפו, המשתמשים יראו סמל מידע לצד שם האפליקציה במסכים מסוימים:
- אם מוסיפים את מסנן ה-Intent שמכיל את הפעולה
VIEW_PERMISSION_USAGE, המשתמשים רואים את הסמל בדף ההרשאות של האפליקציה בהגדרות המערכת. אפשר להחיל את הפעולה הזו על כל ההרשאות בתחילת ההפעלה. - אם תוסיפו את מסנן ה-Intent שמכיל את הפעולה
VIEW_PERMISSION_USAGE_FOR_PERIOD, המשתמשים יראו את הסמל לצד שם האפליקציה בכל פעם שהיא תופיע במסך "מרכז בקרת הפרטיות".
כשהמשתמשים לוחצים על הסמל הזה, מתחילה פעילות ההסבר של האפליקציה.
אינדיקטורים
במכשירים עם Android מגרסה 12 ואילך, כשלאפליקציה יש גישה למיקרופון או למצלמה, מופיע סמל בשורת הסטטוס. אם האפליקציה נמצאת במצב אימרסיבי, הסמל מופיע בפינה השמאלית העליונה של המסך. המשתמשים יכולים לפתוח את ההגדרות המהירות וללחוץ על הסמל כדי לראות אילו אפליקציות משתמשות כרגע במיקרופון או במצלמה. באיור 2 מוצג צילום מסך לדוגמה שמכיל את הסמלים.
זיהוי המיקום של האינדיקטורים במסך
אם האפליקציה תומכת במצב אימרסיבי או בממשק משתמש במסך מלא, יכול להיות שהאינדיקטורים יחפפו לרגע את ממשק המשתמש של האפליקציה. כדי לעזור לכם להתאים את ממשק המשתמש לאינדיקטורים האלה, המערכת מציגה את השיטה getPrivacyIndicatorBounds(), שמוצגת בקטע הקוד הבא. באמצעות ה-API הזה, אתם יכולים לזהות את הגבולות שבהם האינדיקטורים עשויים להופיע. יכול להיות שתחליטו לארגן את ממשק המשתמש של המסך בצורה אחרת.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
מתגים
במכשירים נתמכים עם 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);