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