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

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

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

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

  • انتظِر للوصول إلى كاميرا الجهاز إلى أن يمنح المستخدم إذن CAMERA للوصول إلى تطبيقك.
  • انتظِر للوصول إلى ميكروفون الجهاز إلى أن يمنح المستخدم إذن RECORD_AUDIO لتطبيقك.
  • انتظِر إلى أن يتفاعل المستخدم مع ميزة في تطبيقك تتطلّب الوصول إلى الموقع الجغرافي قبل أن تطلب الحصول على إذن ACCESS_COARSE_LOCATION أو إذن ACCESS_FINE_LOCATION، كما هو موضّح في دليل كيفية طلب أذونات تحديد الموقع الجغرافي.
  • انتظِر إلى أن يمنح المستخدم إذن تطبيقك إما إذن ACCESS_COARSE_LOCATION أو إذن ACCESS_FINE_LOCATION قبل طلب الحصول على إذن ACCESS_BACKGROUND_LOCATION.

لوحة بيانات الخصوصية

يعرض المخطط الزمني العمودي التطبيقات المختلفة التي
         وصلت إلى معلومات الموقع الجغرافي ووقت حدوث عمليات الوصول هذه.
الشكل 1. تشكل شاشة استخدام الموقع الجغرافي جزءًا من لوحة بيانات الخصوصية.

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

المؤشرات

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

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

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

Kotlin

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

تبديل

يتم تصنيف مربّعَي الإعدادات السريعة ضمن &quot;الوصول إلى الكاميرا&quot;
         و&quot;الوصول إلى الميكروفون&quot;.
الشكل 3. انقر على زر التبديل بين الميكروفون والكاميرا في "الإعدادات السريعة".

على الأجهزة المتوافقة التي تعمل بالإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، يمكن للمستخدمين تفعيل وإيقاف إمكانية الوصول إلى الكاميرا والميكروفون لجميع التطبيقات على الجهاز من خلال الضغط على خيار تبديل واحد. يمكن للمستخدمين الوصول إلى الخيارات القابلة للتبديل من الإعدادات السريعة، كما هو موضَّح في الشكل 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);