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

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

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

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

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

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

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

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

منطق دسترسی به داده را نشان دهید

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

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

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

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

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

یک مستطیل گرد در گوشه بالا سمت راست، که شامل یک نماد دوربین و یک نماد میکروفون است
شکل 2. نشانگرهای میکروفون و دوربین که دسترسی اخیر به داده ها را نشان می دهد.

شاخص ها

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

مکان نمایشگرها را شناسایی کنید

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

کاتلین

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

تغییر وضعیت می دهد

کاشی‌های تنظیمات سریع دارای برچسب «دسترسی به دوربین» و «دسترسی به میکروفون» هستند
شکل 3. تعویض میکروفون و دوربین در تنظیمات سریع.

در دستگاه‌های پشتیبانی‌شده که دارای 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);