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

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

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

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

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

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

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

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

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

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

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

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

    اگر برنامه شما برای اندروید ۱۲ یا بالاتر منتشر شده است، باید صریحاً مقداری برای ویژگی android:exported تعریف کنید .

  2. فیلتر intent زیر را به activity تازه اضافه شده اضافه کنید:

    <!-- 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 را بازیابی کند.

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

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

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

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

شاخص‌ها

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

محل قرارگیری نشانگرها را روی صفحه نمایش مشخص کنید

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

کاتلین

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

ضامن‌ها

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

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

تنظیمات دوربین و میکروفون روی همه برنامه‌های روی دستگاه تأثیر می‌گذارد:

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