تمنح الأذونات المرتبطة بالموقع الجغرافي والميكروفون والكاميرا تطبيقك إمكانية الوصول إلى معلومات حسّاسة بشكل خاص عن المستخدمين. تتضمن المنصة الآليات المتعددة الموضحة في هذه الصفحة لمساعدة المستخدمين في البقاء على اطلاع للتحكّم في التطبيقات التي يمكنها الوصول إلى الموقع الجغرافي والميكروفون والكاميرا
إنّ ميزات النظام التي تحافظ على الخصوصية هذه لن تؤثر في طريقة معالجة تطبيقك. الأذونات المتعلقة بالموقع الجغرافي والميكروفون والكاميرا، طالما أنك اتّباع أفضل ممارسات الخصوصية
وعلى وجه الخصوص، احرص على تنفيذ ما يلي في تطبيقك:
- الانتظار للوصول إلى كاميرا الجهاز إلى أن يمنح المستخدم
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
.أضِف فلتر الأهداف التالي إلى النشاط الذي تمت إضافته حديثًا:
<!-- 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
، يمكن لتطبيقك retrieving a value forEXTRA_PERMISSION_GROUP_NAME
. - إذا استدعى النظام
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
، يمكن لتطبيقك retrievingEXTRA_PERMISSION_GROUP_NAME
،EXTRA_ATTRIBUTION_TAGS
،EXTRA_START_TIME
، وEXTRA_END_TIME
.
- إذا استدعى النظام
استنادًا إلى فلاتر الأهداف التي تضيفها، يظهر للمستخدمين رمز معلومات بجانب اسم تطبيقك على شاشات معيّنة:
- في حال إضافة فلتر الأهداف الذي يحتوي على الإجراء
VIEW_PERMISSION_USAGE
، سيظهر للمستخدمين الرمز في صفحة أذونات تطبيقك ضمن إعدادات النظام. يمكنك تطبيق هذا الإجراء على جميع أذونات وقت التشغيل. - في حال إضافة فلتر الأهداف الذي يحتوي على
VIEW_PERMISSION_USAGE_FOR_PERIOD
الإجراء، سيظهر للمستخدمين الرمز بجانب اسم تطبيقك في كل مرة يظهر فيها التطبيق في شاشة "لوحة بيانات الخصوصية".
عندما يختار المستخدمون هذا الرمز، يبدأ نشاط التطبيق المنطقي.
المؤشرات
على الأجهزة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، يظهر رمز في شريط الحالة عندما يستخدم أحد التطبيقات الميكروفون أو الكاميرا. إذا كان التطبيق في الوضع الشامل، يظهر الرمز في أعلى يسار الشاشة. يمكن للمستخدمين فتح "الإعدادات السريعة" والنقر على الرمز لعرض التطبيقات التي تستخدم حاليًا الميكروفون أو الكاميرا. يعرض الشكل 2 مثالاً على لقطة شاشة تحتوي على الرموز.
تحديد موضع المؤشرات على الشاشة
إذا كان تطبيقك متوافقًا مع الوضع المجسم أو واجهة المستخدم بملء الشاشة، قد تكون المؤشرات هي
يتداخل مؤقتًا في واجهة مستخدم تطبيقك. للمساعدة في تكييف واجهة المستخدم مع هذه المؤشرات،
يقدّم النظام getPrivacyIndicatorBounds()
الطريقة التي يوضّحها مقتطف الرمز البرمجي التالي. باستخدام واجهة برمجة التطبيقات هذه، يمكنك تحديد الحدود التي قد تظهر فيها المؤشرات. يمكنك بعد ذلك إعادة ترتيب واجهة المستخدم على الشاشة بشكل مختلف.
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
مفاتيح التبديل
على الأجهزة المتوافقة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، يمكن للمستخدمين تفعيل إذن الوصول إلى الكاميرا والميكروفون وإيقافه لجميع التطبيقات على الجهاز من خلال الضغط على خيار تبديل واحد . يمكن للمستخدمين الوصول إلى الخيارات القابلة للتبديل من الإعدادات السريعة، كما هو موضّح في الشكل 3، أو من شاشة "الخصوصية" في إعدادات النظام.
تؤثر مفاتيح تفعيل/إيقاف الكاميرا والميكروفون في جميع التطبيقات على الجهاز:
- عندما يوقف المستخدم إذن الوصول إلى الكاميرا، يتلقّى تطبيقك خلاصة كاميرا فارغة.
عندما أوقف المستخدم إذن الوصول إلى الميكروفون، يتلقّى تطبيقك صوتًا صامتًا. بالإضافة إلى ذلك، يتم تحديد معدّل عمل مستشعرات الحركة، بغض النظر عمّا إذا كنت قد أفصحت عن إذن
HIGH_SAMPLING_RATE_SENSORS
هذا.
عندما يوقف المستخدم إمكانية الوصول إلى الكاميرا أو الميكروفون، ثم يشغّل تطبيقًا يحتاج إلى الوصول إلى معلومات الكاميرا أو الميكروفون، يذكّر النظام المستخدم بأنّه تم إيقاف خيار التفعيل/الإيقاف على مستوى الجهاز.
التحقّق من توفّر الجهاز
للتحقّق مما إذا كان الجهاز يتيح إيقاف الميكروفون والكاميرا أو تفعيلهما، أضِف المنطق الذي يظهر في مقتطف الرمز البرمجي التالي:
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);