مجوزهای مربوط به موقعیت مکانی، میکروفون و دوربین به برنامه شما اجازه دسترسی به اطلاعات حساس کاربران را میدهد. این پلتفرم شامل چندین مکانیسم است که در این صفحه توضیح داده شده است تا به کاربران کمک کند تا از دسترسی برنامهها به موقعیت مکانی، میکروفون و دوربین مطلع باشند و آنها را کنترل کنند.
این ویژگیهای سیستمیِ حافظ حریم خصوصی، تا زمانی که از بهترین شیوههای حفظ حریم خصوصی پیروی کنید ، نباید بر نحوهی مدیریت مجوزهای مربوط به مکان، میکروفون و دوربین توسط برنامهی شما تأثیر بگذارند.
به طور خاص، مطمئن شوید که موارد زیر را در برنامه خود انجام میدهید:
- منتظر بمانید تا کاربر مجوز
CAMERAبه برنامه شما اعطا کند و به دوربین دستگاه دسترسی پیدا کند. - منتظر بمانید تا کاربر مجوز
RECORD_AUDIOرا به برنامه شما اعطا کند و به میکروفون دستگاه دسترسی پیدا کند. - همانطور که در راهنمای نحوه درخواست مجوزهای موقعیت مکانی توضیح داده شده است، قبل از درخواست مجوز
ACCESS_COARSE_LOCATIONیا مجوزACCESS_FINE_LOCATION، صبر کنید تا کاربر با ویژگیای در برنامه شما که به موقعیت مکانی نیاز دارد، تعامل داشته باشد. - قبل از درخواست مجوز
ACCESS_BACKGROUND_LOCATIONصبر کنید تا کاربر مجوزACCESS_COARSE_LOCATIONیا مجوزACCESS_FINE_LOCATIONرا به برنامه شما اعطا کند.
داشبورد حریم خصوصی
در دستگاههای پشتیبانیشدهای که اندروید ۱۲ یا بالاتر را اجرا میکنند، صفحهای با عنوان «داشبورد حریم خصوصی» در تنظیمات سیستم ظاهر میشود. در این صفحه، کاربران میتوانند به صفحات جداگانهای دسترسی داشته باشند که نشان میدهد برنامهها چه زمانی به اطلاعات موقعیت مکانی، دوربین و میکروفون دسترسی دارند. هر صفحه، جدول زمانی از زمان دسترسی برنامههای مختلف به نوع خاصی از دادهها را نشان میدهد. شکل ۱ جدول زمانی دسترسی به دادهها برای اطلاعات موقعیت مکانی را نشان میدهد.
دلیل دسترسی به دادهها را نشان دهید
برنامه شما میتواند برای کاربران دلیل دسترسی برنامه شما به اطلاعات موقعیت مکانی، دوربین یا میکروفون را توضیح دهد. این دلیل میتواند در صفحه جدید داشبورد حریم خصوصی، صفحه مجوزهای برنامه یا هر دو ظاهر شود.
برای توضیح اینکه چرا برنامه شما به اطلاعات موقعیت مکانی، دوربین و میکروفون دسترسی دارد، مراحل زیر را انجام دهید:
یک فعالیت اضافه کنید که وقتی شروع میشود، منطقی برای اینکه چرا برنامه شما نوع خاصی از اقدام دسترسی به دادهها را انجام میدهد، ارائه دهد. درون این فعالیت، ویژگی
android:permissionرا رویSTART_VIEW_PERMISSION_USAGEتنظیم کنید.اگر برنامه شما برای اندروید ۱۲ یا بالاتر منتشر شده است، باید صریحاً مقداری برای ویژگی
android:exportedتعریف کنید .فیلتر 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>
تصمیم بگیرید که فعالیت منطق دسترسی به دادهها چه چیزی را باید نشان دهد. برای مثال، میتوانید وبسایت برنامه یا یک مقاله مرکز راهنما را نمایش دهید. برای ارائه توضیح دقیقتر در مورد انواع دادههایی که برنامه شما به آنها دسترسی دارد، و همچنین زمان وقوع دسترسی، موارد اضافی را که سیستم هنگام فراخوانی هدف استفاده از مجوز شامل میشود، مدیریت کنید:
- اگر سیستم
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);