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