توضیح دادن دسترسی به اطلاعات حساس‌تر

اجازه‌های مربوط به مکان، میکروفون، و دوربین به برنامه شما اجازه می‌دهند به اطلاعات بسیار حساس درباره کاربران دسترسی داشته باشد. این پلاتفرم شامل چندین سازوکار است که در این صفحه شرح داده شده است تا به کاربران کمک کند مطلع بمانند و کنترل کنند کدام برنامه‌ها می‌توانند به مکان، میکروفون، و دوربین دسترسی داشته باشند.

این ویژگی‌های سیستم حافظ حریم خصوصی نباید بر نحوه مدیریت اجازه‌های مربوط به مکان، میکروفون، و دوربین توسط برنامه شما تأثیر بگذارد، به‌شرطی که از روال‌های مطلوب حریم خصوصی پیروی کنید.

به‌طور خاص، مطمئن شوید که موارد زیر را در برنامه‌تان انجام می‌دهید:

  • تا زمانی که کاربر اجازه CAMERA را به برنامه‌تان نداده است، برای دسترسی به دوربین دستگاه صبر کنید.
  • برای دسترسی به میکروفون دستگاه، صبر کنید تا کاربر اجازه RECORD_AUDIO را به برنامه‌تان اعطا کند.
  • قبل‌از درخواست کردن اجازه ACCESS_COARSE_LOCATION یا اجازه ACCESS_FINE_LOCATION، صبر کنید تا کاربر با ویژگی‌ای در برنامه‌تان که به مکان نیاز دارد تعامل برقرار کند، همان‌طور که در راهنمای نحوه درخواست اجازه‌های مکان شرح داده شده است.
  • صبر کنید تا کاربر اجازه ACCESS_COARSE_LOCATION یا اجازه ACCESS_FINE_LOCATION را به برنامه‌تان اعطا کند، سپس اجازه ACCESS_BACKGROUND_LOCATION را درخواست کنید.

داشبورد حریم خصوصی

خط زمانی عمودی برنامه‌های مختلفی را نشان می‌دهد که
         به اطلاعات مکان دسترسی داشته‌اند و زمان دسترسی را نشان می‌دهد
شکل ۱. صفحه استفاده از مکان، بخشی از «داشبورد حریم خصوصی».

در دستگاه‌های پشتیبانی‌شده‌ای که Android نسخه ۱۲ یا بالاتر دارند، صفحه «داشبورد حریم خصوصی» در تنظیمات سیستم نشان داده می‌شود. در این صفحه، کاربران می‌توانند به صفحه‌های جداگانه‌ای دسترسی پیدا کنند که نشان می‌دهد برنامه‌ها چه زمانی به اطلاعات مکان، دوربین، و میکروفون دسترسی پیدا می‌کنند. هر صفحه خط زمانی‌ای را نشان می‌دهد که برنامه‌های مختلف به نوع خاصی از داده دسترسی داشته‌اند. شکل ۱ خط زمان دسترسی به داده‌ها را برای اطلاعات مکان نشان می‌دهد.

نمایش دلیل دسترسی به داده‌ها

برنامه‌تان می‌تواند منطقی برای کاربران ارائه دهد تا به آن‌ها کمک کند متوجه شوند چرا برنامه‌تان به اطلاعات مکان، دوربین، یا میکروفون دسترسی دارد. این منطق می‌تواند در صفحه جدید «داشبورد حریم خصوصی»، صفحه اجازه‌های برنامه‌تان، یا هر دو نشان داده شود.

برای توضیح اینکه چرا برنامه‌تان به اطلاعات مکان، دوربین، و میکروفون دسترسی دارد، مراحل زیر را تکمیل کنید:

  1. فعالیتی اضافه کنید که وقتی شروع می‌شود، منطقی برای اینکه چرا برنامه‌تان نوع خاصی از کنش دسترسی به داده را انجام می‌دهد ارائه دهد. در این فعالیت، مشخصه android:permission را روی START_VIEW_PERMISSION_USAGE تنظیم کنید.

    اگر برنامه شما 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. تصمیم بگیرید که فعالیت منطق دسترسی به داده‌هایتان چه چیزی را نشان دهد. برای مثال، می‌توانید وب‌سایت برنامه‌تان یا مقاله مرکز راهنمایی را نشان دهید. برای ارائه توضیح دقیق‌تر درباره انواع داده‌هایی که برنامه‌تان به آن‌ها دسترسی دارد و همچنین زمان وقوع دسترسی، موارد اضافی را که سیستم هنگام فراخوانی هدف استفاده از اجازه لحاظ می‌کند مدیریت کنید:

    • اگر سیستم 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 را بازیابی کند.

بسته به اینکه کدام فیلترهای قصد را اضافه می‌کنید، کاربران نماد اطلاعات را در کنار نام برنامه‌تان در صفحه‌های خاصی می‌بینند:

  • اگر فیلتر قصدی را که حاوی کنش VIEW_PERMISSION_USAGE است اضافه کنید، کاربران نماد را در صفحه اجازه‌های برنامه‌تان در تنظیمات سیستم می‌بینند. می‌توانید این کنش را برای همه اجازه‌های زمان اجرا اعمال کنید.
  • اگر فیلتر قصدی را اضافه کنید که حاوی کنش VIEW_PERMISSION_USAGE_FOR_PERIOD باشد، هرگاه برنامه‌تان در صفحه «داشبورد حریم خصوصی» ظاهر شود، کاربران نماد را در کنار نام برنامه‌تان می‌بینند.

وقتی کاربران آن نماد را انتخاب می‌کنند، فعالیت منطقی برنامه‌تان شروع می‌شود.

مستطیلی با گوشه‌های گرد در گوشه بالا سمت چپ که
         شامل نماد دوربین و نماد میکروفون است
شکل ۲. نشانگرهای میکروفون و دوربین که دسترسی اخیر به داده‌ها را نشان می‌دهند.

شاخص‌ها

در دستگاه‌های دارای Android نسخه ۱۲ یا بالاتر، وقتی برنامه‌ای به میکروفون یا دوربین دسترسی پیدا می‌کند، نمادی در نوار وضعیت نشان داده می‌شود. اگر برنامه در حالت فراگیر باشد، نماد در گوشه بالا سمت راست صفحه ظاهر می‌شود. کاربران می‌توانند «تنظیمات فوری» را باز کنند و نماد را انتخاب کنند تا ببینند کدام برنامه‌ها درحال‌حاضر از میکروفون یا دوربین استفاده می‌کنند. شکل ۲ نمونه نماگرفتی را نشان می‌دهد که حاوی این نمادها است.

شناسایی مکان نشانگرها در صفحه

اگر برنامه‌تان از حالت فراگیر یا میانای کاربری تمام‌صفحه پشتیبانی می‌کند، ممکن است نشانگرها به‌طور موقت روی میانای کاربری برنامه‌تان قرار بگیرند. برای کمک به تطبیق واسط کاربر با این نشانگرها، سیستم روش getPrivacyIndicatorBounds() را معرفی می‌کند که تکه‌کد زیر آن را نشان می‌دهد. بااستفاده از این API، می‌توانید مرزهایی را که ممکن است نشانگرها در آن ظاهر شوند شناسایی کنید. سپس ممکن است تصمیم بگیرید رابط کاربری صفحه‌نمایش را به‌طور متفاوتی سازمان‌دهی کنید.

کاتلین

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

کلیدهای روشن/خاموش

کاشی‌های تنظیمات فوری با برچسب «دسترسی به دوربین» و
         «دسترسی به میکروفون» مشخص شده‌اند
شکل ۳. کلیدهای میکروفون و دوربین در «تنظیمات فوری».

در دستگاه‌های پشتیبانی‌شده که Android نسخه ۱۲ یا بالاتر دارند، کاربران می‌توانند با فشار دادن یک گزینه روشن/خاموش، دسترسی به دوربین و میکروفون را برای همه برنامه‌های دستگاه فعال و غیرفعال کنند. کاربران می‌توانند از تنظیمات فوری، همان‌طور که در شکل ۳ نشان داده شده است، یا از صفحه «حریم خصوصی» در تنظیمات سیستم به گزینه‌های قابل‌تغییر دسترسی پیدا کنند.

کلیدهای تغییر وضعیت دوربین و میکروفون بر همه برنامه‌های دستگاه تأثیر می‌گذارد:

  • وقتی کاربر دسترسی به دوربین را خاموش می‌کند، برنامه شما فید دوربین خالی دریافت می‌کند.
  • وقتی کاربر دسترسی به میکروفون را خاموش می‌کند، برنامه شما صدای بی‌صدا دریافت می‌کند. علاوه‌براین، حسگرهای حرکتی محدودیت نرخ دارند، صرف‌نظر از اینکه اجازه 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);