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