شناسه‌های دستگاه تغییرناپذیر

در Android 6 و نسخه‌های بالاتر، ارائه‌دهندگان خدمات Wi-Fi و تحلیل‌گران بسته از بازیابی نشانی MAC کارخانه‌ای دستگاه ازطریق پشته Wi-Fi از درخواست‌های شبکه منع شده‌اند. از Android نسخه ۱۰ به بعد، محدودیت‌های بیشتری اعمال شده است که دسترسی به شناسه‌های دستگاه را به برنامه‌هایی با سطح اجازه ممتاز محدود می‌کند. این کار از شناسه‌های دستگاه مثل موارد زیر محافظت می‌کند

  • شماره‌های IMEI،‏ MEID،‏ ESN، و IMSI تلفن.
  • شماره سریال ساخت، سیم‌کارت، یا USB.

چه کسانی می‌توانند به شناسه‌های دستگاه دسترسی داشته باشند

شناسه‌های دستگاه در همه دستگاه‌های Android 10 محدود شده است، حتی اگر برنامه‌ها Android 9 یا پایین‌تر را هدف قرار دهند. شناسه‌های دستگاه می‌تواند توسط این موارد دردسترس قرار گیرد:

  • برنامه پیامک پیش‌فرض.
  • برنامه‌هایی که هم اجازه READ_PRIVILEGED_PHONE_STATE در کلاس Manifest.permission را دارند و هم در فایل privapp-permission.xml در فهرست مجاز قرار گرفته‌اند. این موارد باید در فهرست راهنمای priv-app نیز بار شود.
  • برنامه‌هایی که امتیازات شرکت مخابراتی دارند، همان‌گونه که در امتیازات شرکت مخابراتی UICC تعریف شده است.
  • مالک دستگاه یا مالک نمایه با اجازه READ_PHONE_STATE که در کلاس Manifest.permission اعطا شده است. (فهرست مجازها لازم نیست.)

دسترسی به بسته‌های ممتاز

بسته باید ممتاز باشد تا بتواند به شناسه‌های دستگاه دسترسی داشته باشد. باید در کلاس Manifest.permission اجازه READ_PRIVILEGED_PHONE_STATE را داشته باشد و در فایل privapp-permission.xml در فهرست مجازها قرار داشته باشد. برای کسب اطلاعات درباره فرایند فهرست مجاز، به فهرست مجاز اجازه‌های ممتاز مراجعه کنید.

برای کسب اطلاعات درباره دریافت شناسه یکتا برای بسته غیرممتاز، به موارد استفاده رایج و شناسه مناسب برای استفاده مراجعه کنید.

شناسه‌های دستگاه محدودشده و مک آدرس تصادفی‌سازی‌شده

برای محدود کردن بیشتر شناسه‌های دستگاه، همه دستگاه‌های Android 10 به‌طور پیش‌فرض برای هر دو درخواست کاوش و درخواست منسوب، مک آدرس‌های تصادفی‌سازی‌شده ارسال می‌کنند و باید برای هر SSID، مک آدرس تصادفی‌سازی‌شده متفاوتی داشته باشند. از نشانی MAC کارخانه دستگاه در حالت کارخواه، نقطه دسترسی نرم‌افزاری (AP)، یا موارد استفاده Wi-Fi Direct استفاده نکنید. این اطلاعات باید از میاناهای برنامه‌سازی کاربردی دردسترس برای عموم که برنامه‌های ممتاز نیستند پنهان بماند. برنامه‌های ممتاز که برای برگرداندن نشانی MAC کارخانه به اجازه LOCAL_MAC_ADDRESS نیاز دارند.

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

صفحه نشان می‌دهد که آیا شناسه دستگاه از آدرس MAC تصادفی برای حفظ حریم خصوصی استفاده می‌کند یا نه

شکل ۱.«مک آدرس» در بخش «حریم خصوصی» در «جزئیات شبکه» به‌صورت تصادفی‌سازی‌شده نشان داده می‌شود.

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

برنامه‌هایی که میاناهای برنامه‌سازی کاربردی شناسه دستگاه را فرا می‌خوانند باید الزامات Android 10 را برآورده کنند. درغیراین‌صورت، وقتی برای دسترسی به شناسه‌های دستگاه تلاش می‌کنند، موارد زیر برگردانده می‌شود:

  • برنامه‌های هدف‌یابی Android 10
    • ‫SecurityException از APIهای شناسه دستگاه پرتاب می‌شود.
  • برنامه‌هایی که Android 9 یا نسخه‌های قدیمی‌تر را هدف‌یابی می‌کنند
    • اگر اجازه READ_PHONE_STATE را داشته باشد، یا پاسخ null یا داده‌های جای‌بان برگردانده می‌شود.
    • اگر این‌طور نباشد، میاناهای برنامه‌سازی کاربردی شناسه دستگاه SecurityException را برمی‌گردانند که حاوی نام روش فراخوانی‌شده است و نشان می‌دهد که برنامه فراخواننده شرایط لازم برای دسترسی به شناسه درخواست‌شده را ندارد.

برای اطلاعات بیشتر درباره شناسه‌های تغییرناپذیر دستگاه، به شناسه‌های دستگاه غیرقابل‌بازنشانی و روال‌های مطلوب برای شناسه‌های یکتا مراجعه کنید.

آزمایش

برنامه‌ها باید از دسترسی به شماره سریال دستگاه و، درصورت لزوم، IMEI یا MEID، شماره سریال سیم‌کارت، و شناسه مشترک منع شوند. برنامه‌هایی که اجازه دسترسی به این شناسه‌ها را دارند باید یکی از معیارهای فهرست‌شده در بخش چه کسانی می‌توانند به شناسه‌های دستگاه دسترسی داشته باشند را نیز داشته باشند.