شرح إمكانية الوصول إلى معلومات حساسة

تمنح الأذونات المرتبطة بالموقع الجغرافي والميكروفون والكاميرا تطبيقك إمكانية الوصول إلى معلومات حسّاسة بشكل خاص عن المستخدمين. تتضمّن المنصة عدة آليات، موضّحة في هذه الصفحة، لمساعدة المستخدمين في البقاء على اطّلاع وتحديد التطبيقات التي يمكنها الوصول إلى الموقع الجغرافي والميكروفون والكاميرا.

من المفترض ألا تؤثّر ميزات النظام هذه التي تحافظ على الخصوصية في كيفية تعامل تطبيقك مع الأذونات المتعلّقة بالموقع الجغرافي والميكروفون والكاميرا، ما دام التطبيق يطبّق أفضل الممارسات المتعلّقة بالخصوصية.

على وجه الخصوص، تأكد من إجراء ما يلي في تطبيقك:

  • انتظر الوصول إلى كاميرا الجهاز إلى أن يمنح المستخدم إذن 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.

    إذا كان تطبيقك يستهدف الإصدار 12 من نظام التشغيل Android أو إصدارًا أحدث، عليك تحديد قيمة للسمة android:exported بشكل صريح.

  2. أضِف فلتر الأهداف التالي إلى النشاط الذي تمت إضافته حديثًا:

    <!-- 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. حدِّد ما يجب أن يعرضه نشاط "السبب المنطقي للوصول إلى البيانات". على سبيل المثال، قد تعرض الموقع الإلكتروني لتطبيقك أو مقالة في مركز المساعدة. لتقديم شرح أكثر تفصيلاً حول أنواع البيانات التي يصل تطبيقك إليها ووقت حدوث ذلك، يمكنك التعامل مع الميزات الإضافية التي يشملها النظام عندما يستدعي الغرض من استخدام الإذن:

بناءً على فلاتر الأهداف التي تضيفها، يظهر للمستخدمين رمز معلومات بجانب اسم التطبيق على شاشات معيّنة:

  • في حال إضافة فلتر الأهداف الذي يحتوي على الإجراء VIEW_PERMISSION_USAGE ، سيظهر للمستخدمين الرمز في صفحة أذونات تطبيقك ضمن إعدادات النظام. يمكنك تطبيق هذا الإجراء على جميع أذونات وقت التشغيل.
  • في حال إضافة فلتر الأهداف الذي يحتوي على الإجراء VIEW_PERMISSION_USAGE_FOR_PERIOD، سيرى المستخدمون الرمز بجانب اسم تطبيقك عندما يظهر تطبيقك في شاشة "لوحة بيانات الخصوصية".

عندما يختار المستخدمون هذا الرمز، يبدأ نشاط التطبيق المنطقي.

مستطيل بيضاوي في أعلى يسار الشاشة يحتوي
         على رمز كاميرا ورمز ميكروفون
الشكل 2. مؤشرات استخدام الميكروفون والكاميرا، التي تعرض عمليات الوصول إلى البيانات الأخيرة

المؤشرات

على الأجهزة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، يظهر رمز في شريط الحالة عندما يستخدم أحد التطبيقات الميكروفون أو الكاميرا. إذا كان التطبيق في الوضع الشامل، يظهر الرمز في أعلى يسار الشاشة. يمكن للمستخدمين فتح "الإعدادات السريعة" والنقر على الرمز لعرض التطبيقات التي تستخدم حاليًا الميكروفون أو الكاميرا. يعرض الشكل 2 مثالاً على لقطة شاشة تحتوي على الرموز.

تحديد موضع المؤشرات على الشاشة

إذا كان تطبيقك يتيح الوضع الشامل أو واجهة مستخدم بملء الشاشة، قد تتراكب المؤشرات مؤقتًا مع واجهة مستخدم تطبيقك. للمساعدة في تكييف واجهة المستخدم مع هذه المؤشرات، يقدّم النظام أسلوب getPrivacyIndicatorBounds() الذي يوضّحه مقتطف الرمز البرمجي التالي. باستخدام واجهة برمجة التطبيقات هذه، يمكنك تحديد الحدود التي قد تظهر فيها المؤشرات. يمكنك بعد ذلك إعادة ترتيب واجهة المستخدم على الشاشة بشكل مختلف.

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

مفاتيح التبديل

يظهر قسم &quot;الإعدادات السريعة&quot; ضمن &quot;الوصول إلى الكاميرا&quot;
         و&quot;الوصول إلى الميكروفون&quot;.
الشكل 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);