نشانگرهای حریم خصوصی

Android با نمایش نشانگرهای حریم خصوصی برای انواع دسترسی زیر، شفافیت را برای کاربران فراهم می‌کند:

کاربران روی نشانگر تک‌ضرب می‌زنند تا ببینند کدام برنامه‌ها به داده‌هایشان دسترسی داشته‌اند.

استفاده‌های فعال و اخیر

«میانای کاربری Android» بین استفاده‌های در حال اجرا و استفاده‌های اخیر تمایز قائل می‌شود:

  • در Android 17 یا بالاتر، استفاده‌های مکان درصورتی فعال درنظر گرفته می‌شوند که سیستم آن‌ها را به‌عنوان درحال اجرا علامت‌گذاری کرده باشد یا کمتر از ۱۰ ثانیه از آن‌ها گذشته باشد. برای نقطه مکان، دسترسی درصورتی فعال درنظر گرفته می‌شود که برنامه غیرسیستم در حالت پیش‌زمینه اجرا شود.

  • در Android 12 یا بالاتر، استفاده از میکروفون و دوربین فعال درنظر گرفته می‌شود اگر سیستم آن‌ها را به‌عنوان درحال اجرا علامت‌گذاری کرده باشد، یا اگر کمتر از پنج ثانیه از زمان استفاده آن‌ها گذشته باشد.

هر بار که برنامه‌ای به میکروفون، دوربین، یا مکان حساس کاربر دسترسی داشته باشد، نمادهای نوار وضعیت نشان داده می‌شود. کاربران می‌توانند روی این نمادها تک‌ضرب بزنند و ببینند کدام برنامه‌ها به میکروفون، دوربین، مکان، یا ترکیبی از این موارد دسترسی دارند. در اینجا مثالی از نشانگرهای درحال استفاده آورده شده است:

نشانگرهایی که دسترسی فعال را نشان می‌دهند

شکل ۱. نشانگرهای درحال استفاده که دسترسی فعال را نشان می‌دهد (گوشه بالا سمت چپ).

دسترسی تا زمانی که نشانگرها نشان داده می‌شوند فعال درنظر گرفته می‌شود. ابتدا نمادی نشان داده می‌شود، سپس به نقطه‌ای تبدیل می‌شود که تا زمانی که برنامه رد یا بسته نشود باقی می‌ماند. وقتی کاربر «تنظیمات فوری» را باز می‌کند و سپس روی نشانگرها ضربه می‌زند، کادر گفتگویی ظاهر می‌شود که نشان می‌دهد آیا برنامه از میکروفون، دوربین، مکان، یا ترکیبی از این موارد استفاده می‌کند یا نه.

شکل ۲ نشانگرهای دسترسی فعال را زمانی که یک برنامه درحال اجرا در بازه زمانی فعال به داده‌ها دسترسی داشته است نشان می‌دهد.

نشانگرهای دسترسی فعال و اخیر و منبع

شکل ۲. نشانگرهای دسترسی فعال و اخیر.

نشانگرهای دسترسی اخیر نشان می‌دهند که برنامه‌ای در ۱۵ ثانیه گذشته (یا ۲۰ ثانیه برای داده‌های مکان) به داده‌ها دسترسی داشته است، اما آن برنامه فعال نیست. همه برنامه‌های فعال در کادر گفتگو نشان داده می‌شوند، اما فقط یک برنامه به‌عنوان منبع دسترسی اخیر نشان داده می‌شود، حتی زمانی که بیش‌از یک برنامه در بازه زمانی ۱۵ یا ۲۰ ثانیه قبلی به داده‌ها دسترسی داشته باشد. همه برنامه‌هایی که در بازه زمانی فعال یا اخیر به داده‌های مکان دسترسی داشته‌اند در این چارگوش نشان داده می‌شوند. نمای دسترسی تا زمانی که کاربر کادر گفتگوی اعلان را ببندد باقی می‌ماند.

ارائه و فعال کردن

کلاس PermissionManager روشی برای پر کردن کادر گفتگو (که در «واسط کاربر سیستم» قرار دارد) ارائه می‌دهد. «میانای کاربر سامانه» به کلید پیکربندی دستگاه privacy/mic_camera_indicators_enabled واکنش نشان می‌دهد؛ این کلید ضروری است زیرا دو وسیله تحویل جداگانه وجود دارد: (۱) تحویل، سپس (۲) فعال کردن.

جریان فرایند

عملکرد «نشانگر اجازه» سه بخش اصلی دارد:

  • برنامه‌ها
  • نشانگرها (که توسط «واسط کاربر سیستم» مدیریت می‌شود)
  • روشی برای تعیین اینکه کدام برنامه‌ها از داده‌ها استفاده می‌کنند

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

جریان پردازش برای کارکردهای «نشانگر اجازه»

شکل ۳. جریان انتقال عناصر سیستم و (میانای کاربر).

  • ۱ برنامه‌ای داده‌های خصوصی را از سیستم درخواست می‌کند.

  • ۲ سیستم اجازه‌ها را بررسی می‌کند. اگر اجازه‌ها مجاز باشند، سیستم به ارائه‌دهنده داده اطلاع می‌دهد و استفاده را در عملیات برنامه یادداشت می‌کند.

  • ‫۳ فراهم‌کننده داده‌ها را به برنامه می‌دهد.

  • ۴-۵ کاربر روی نمادها کلیک می‌کند. «میانای کاربر سامانه» داده‌ها را از PermissionManager درخواست می‌کند و کادر گفتگویی را به کاربر نشان می‌دهد.

جزئیات پردازش

«عملیات برنامه» دسترسی به میاناهای برنامه‌سازی کاربردی محافظت‌شده با اجازه زمان اجرا را ثبت می‌کند، وضعیت فعالیت و تعداد تماس‌های API فردی را ردیابی می‌کند، و با دوربین، میکروفون، و نشانگرها تعامل می‌کند تا به کاربران نشان دهد برنامه‌ها چه زمانی به داده‌های صوتی و دوربین در دستگاه‌هایشان دسترسی داشته‌اند.

  1. برنامه‌ها با فراخواندن AppOpsManager.startOp،‏ stopOp، یا noteOp از میکروفون، دوربین، یا مکان استفاده می‌کنند. با این کار، سوابق عملیات برنامه در سرور سیستم ایجاد می‌شود. در نسخه ۱۷ و بالاتر، نشانگر مکان نیز از این سوابق عملیات برنامه استفاده می‌کند.

  2. «میانای کاربری سیستم» بااستفاده از شنوندگان AppOpsManager.OnOpActiveChangedInternalListener و OnOpNotedListener به عملیات‌های برنامه جدید گوش می‌دهد. وقتی استفاده جدیدی وارد می‌شود (ازطریق تماس با startOp یا noteOp)، «میانای کاربر سیستم» بررسی می‌کند که استفاده ازسوی برنامه سیستم باشد:

    • اگر «میانای کاربر سیستم» استفاده از برنامه سیستم را درستی‌سنجی کند و اگر استفاده برای میکروفون باشد، «میانای کاربر سیستم» بررسی می‌کند که میکروفون بی‌صدا است یا نه.

    • اگر «میانای کاربر سامانه» استفاده از برنامه غیرسیستمی را تأیید کند (و برای استفاده از میکروفون، میکروفون بی‌صدا نباشد؛ برای استفاده از دوربین، دوربین روشن باشد)، نمادی را نشان می‌دهد که این استفاده را منعکس می‌کند.

    • اگر «میانای کاربر سیستم» استفاده از برنامه غیرسیستم را تأیید کند، نمادی نشان می‌دهد که چنین استفاده‌ای را منعکس می‌کند، به‌شرطی که کلیدهای مربوطه فعال باشند:

      • برای میکروفون: میکروفون باصدا است.
      • برای دوربین: دوربین روشن می‌شود.
      • برای مکان: برنامه در وضعیت پیش‌زمینه درحال اجرا است.

اگر «واسط کاربر سیستم» noteOp را دریافت کند که مدت ندارد، نماد را حداقل ۵ ثانیه (۱۰ ثانیه برای مکان) نشان می‌دهد. درغیراین‌صورت، نماد تا زمانی که stopOp را دریافت کند یا برای حداقل مدت ۵ یا ۱۰ ثانیه، هرکدام طولانی‌تر باشد، نشان داده می‌شود. کاربر با کلیک کردن روی نماد، هدفی را آغاز می‌کند که به PermissionController می‌رود تا کادر گفتگو را شروع کند.

‫PermissionController همه استفاده‌های اخیر از میکروفون، دوربین، و مکان را بار می‌کند. این مدیر بررسی می‌کند که آیا هیچ‌کدام از این حسگرها درحال اجرا هستند یا در چارچوب زمانی تنظیم‌شده توسط «میانای کاربر سیستم» (۱۵ ثانیه برای میکروفون یا دوربین، ۲۰ ثانیه برای مکان) درحال اجرا بوده‌اند یا نه. اگر مطابقت پیدا کند، نام برنامه و اجازه‌های استفاده‌شده را نمایش می‌دهد.

«خدمات تلفنی» باید استفاده از اجازه را پیاده‌سازی کند (تا پشته میکروفون جداگانه‌ای را که در تماس‌های تلفنی استفاده می‌شود درنظر بگیرد)، درحالی‌که با برنامه «جستجوی Google ویژه Android» (AGSA) و GMS کار می‌کند.