پشتیبانی از چندین کاربر

اندروید با جداسازی حساب‌های کاربری و داده‌های برنامه، از چندین کاربر در یک دستگاه اندروید پشتیبانی می‌کند. به عنوان مثال، والدین ممکن است به فرزندان خود اجازه دهند تا از تبلت خانوادگی استفاده کنند، یک خانواده می‌تواند یک خودرو را به اشتراک بگذارد، یا یک تیم پاسخ انتقادی ممکن است یک دستگاه تلفن همراه را برای انجام وظیفه به اشتراک بگذارد.

واژه شناسی

اندروید هنگام توصیف کاربران و اکانت های اندروید از عبارات زیر استفاده می کند.

عمومی

مدیریت دستگاه اندروید از اصطلاحات کلی زیر استفاده می کند:

  • کاربر: هر کاربر برای استفاده توسط یک شخص فیزیکی متفاوت در نظر گرفته شده است. هر کاربر دارای داده های برنامه متمایز و برخی تنظیمات منحصر به فرد، و همچنین یک رابط کاربری برای جابجایی صریح بین کاربران است. زمانی که کاربر دیگری فعال است، کاربر می تواند در پس زمینه اجرا شود. سیستم مدیریت خاموش کردن کاربران را برای حفظ منابع در صورت لزوم می کند. کاربران ثانویه را می توان مستقیماً از طریق رابط کاربری یا از یک برنامه مدیریت دستگاه ایجاد کرد.
  • حساب: حساب‌ها در داخل یک کاربر قرار می‌گیرند اما توسط کاربر تعریف نمی‌شوند، همچنین یک کاربر توسط حساب خاصی تعریف نشده یا به آن پیوند داده شده است. کاربران و نمایه‌ها دارای حساب‌های منحصربه‌فرد خود هستند، اما برای کاربردی بودن نیازی به داشتن حساب ندارند. لیست حساب ها بر اساس کاربر متفاوت است. برای جزئیات، به تعریف کلاس حساب مراجعه کنید.
  • نمایه: یک نمایه داده های برنامه را جدا کرده است، اما برخی از تنظیمات سیستم را به اشتراک می گذارد (به عنوان مثال، Wi-Fi و بلوتوث). پروفایل زیرمجموعه ای از وجود یک کاربر است و به آن گره خورده است. یک کاربر می تواند چندین پروفایل داشته باشد. نمایه ها از طریق یک برنامه مدیریت دستگاه ایجاد می شوند. یک نمایه همیشه یک ارتباط تغییرناپذیر با یک کاربر والد دارد که توسط کاربری که نمایه را ایجاد کرده است تعریف می شود. نمایه ها بیش از طول عمر کاربر ایجاد کننده وجود ندارند.
  • برنامه: داده های یک برنامه در هر کاربر مرتبط وجود دارد. داده‌های برنامه از سایر برنامه‌های درون همان کاربر جعبه‌بندی می‌شوند. برنامه های داخل یک کاربر می توانند از طریق IPC با یکدیگر تعامل داشته باشند. برای جزئیات، به Android برای سازمانی مراجعه کنید.

دسته بندی کاربران

مدیریت دستگاه اندروید از دسته بندی کاربران زیر استفاده می کند.

  • کاربر سیستم: اولین کاربر اضافه شده به دستگاه. کاربر سیستم را نمی توان حذف کرد مگر با بازنشانی کارخانه و همیشه در حال اجرا است حتی زمانی که سایر کاربران در پیش زمینه هستند. این کاربر همچنین دارای امتیازات و تنظیمات ویژه ای است که فقط می تواند تنظیم کند.
  • کاربر سیستم هدلس: اولین کاربر به دستگاهی اضافه می‌شود که دستگاه برای اجرا در حالت کاربر سیستم بدون هد پیکربندی شده باشد (با تنظیم ro.fw.mu.headless_system_user=true ). کاربر سیستم هدلس همیشه در پس‌زمینه اجرا می‌شود، بنابراین چنین دستگاه‌هایی برای فعال کردن تعامل کاربر به کاربران پیش‌زمینه بیشتری نیاز دارند.
  • کاربر ثانویه: هر کاربری که به دستگاه اضافه شود غیر از کاربر سیستم. کاربران ثانویه را می توان حذف کرد (چه توسط خودشان یا توسط یک کاربر سرپرست) و نمی توانند روی سایر کاربران دستگاه تأثیر بگذارند. این کاربران می‌توانند در پس‌زمینه اجرا شوند و به اتصال شبکه ادامه دهند.
  • کاربر مهمان: کاربر ثانویه موقت. کاربران مهمان یک گزینه صریح برای حذف سریع کاربر مهمان پس از پایان مفید بودن آن دارند. در هر زمان فقط یک کاربر مهمان می تواند وجود داشته باشد.
  • کاربر مدیر: کاربری که اجازه ایجاد و حذف سایر کاربران و همچنین کنترل برخی تنظیمات کلی چند کاربره را دارد. به طور پیش فرض، فقط کاربر سیستم یک ادمین است.

دسته بندی پروفایل ها

اندروید از دسته بندی های زیر استفاده می کند:

  • نمایه مدیریت شده: توسط یک برنامه ایجاد شده است تا حاوی داده های کاری و برنامه ها باشد. آنها منحصراً توسط مالک نمایه (برنامه ای که نمایه شرکت را ایجاد کرده است) مدیریت می شوند. راه‌انداز، اعلان‌ها و وظایف اخیر توسط کاربر والدین و نمایه شرکت به اشتراک گذاشته می‌شود.
  • نمایه محدود: از حساب‌های مبتنی بر کاربر والد استفاده می‌کند، که می‌تواند برنامه‌های موجود در نمایه محدود را کنترل کند. فقط در تبلت ها و دستگاه های تلویزیونی موجود است.
  • نمایه کلون: اندروید از ایجاد یک نوع کاربری پروفایل کلون جداگانه برای فعال کردن اجرای دو نمونه از یک برنامه واحد در دستگاه پشتیبانی می کند. AOSP پشتیبانی سرتاسری از این ویژگی را ارائه نمی کند. OEM ها باید سفارشی سازی هایی را اضافه کنند تا ویژگی کامل را به کاربران اندروید ارائه دهند.

انواع کاربر

Android 11 طبقه‌بندی بالا از کاربران و نمایه‌ها را به انواع کاربری کاملاً تعریف‌شده فرموله کرده است که نشان‌دهنده همه انواع مختلف کاربران و نمایه‌های مجاز توسط ویژگی چند کاربر اندروید است.

انواع از پیش تعریف شده کاربر AOSP در frameworks/base/core/java/android/os/UserManager.java تعریف شده و در حال حاضر شامل موارد زیر است:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS
  • android.os.usertype.profile.CLONE

OEM ها توانایی پیکربندی این نوع کاربری را با همپوشانی فایل frameworks/base/core/res/res/xml/config_user_types.xml دارند. این تغییر پیکربندی پیش‌فرض برای هر نوع کاربر، از جمله محدودیت‌های پیش‌فرض، نمادها، نشان‌ها و حداکثر تعداد مجاز کاربران را تسهیل می‌کند.

علاوه بر انواع کاربر AOSP قابل تنظیم، OEM ها می توانند انواع پروفایل های جدید را با استفاده از فایل frameworks/base/core/res/res/xml/config_user_types.xml تعریف کنند. این به OEM ها اجازه می دهد تا در صورت تمایل انواع پروفایل های مدیریت نشده خود را معرفی کنند. با این حال، این مسئولیت OEM است که تغییرات پلتفرم را در صورت نیاز برای پشتیبانی از تغییرات انجام دهد، از جمله اصلاح هر کدی که نمایه های مدیریت شده را بررسی می کند تا اکنون در صورت لزوم نوع نمایه جدید را کنترل کند.

فعال کردن چند کاربر

ویژگی چند کاربره به طور پیش فرض غیرفعال است. برای فعال کردن این ویژگی، سازندگان دستگاه باید یک پوشش منبع تعریف کنند که جایگزین مقادیر زیر در frameworks/base/core/res/res/values/config.xml شود:

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

برای اعمال این پوشش و فعال کردن کاربران مهمان و ثانویه در دستگاه، از ویژگی DEVICE_PACKAGE_OVERLAYS سیستم ساخت Android استفاده کنید تا مقادیر زیر را جایگزین کنید:

  • config_multiuserMaximumUsers با مقدار بیشتر از 1
  • config_enableMultiUserUI با true

سازندگان دستگاه ممکن است در مورد حداکثر تعداد کاربران تصمیم بگیرند. اگر سازندگان دستگاه یا سایرین تنظیمات را تغییر داده اند، باید مطمئن شوند که پیامک و تلفن مطابق تعریف سند سازگاری Android (CDD) کار می کنند.

مدیریت چندین کاربر

مدیریت کاربران و پروفایل ها (به استثنای پروفایل های محدود شده) توسط برنامه هایی انجام می شود که به صورت برنامه نویسی API را در کلاس DevicePolicyManager فراخوانی می کنند تا استفاده را محدود کنند.

شرکت‌ها ممکن است از کاربران و نمایه‌ها برای مدیریت طول عمر و دامنه برنامه‌ها و داده‌ها در دستگاه‌ها استفاده کنند، با استفاده از انواع ذکر شده در بالا به همراه APIهای DevicePolicyManager و UserManager برای ایجاد راه‌حل‌های منحصربه‌فرد متناسب با موارد استفاده آن‌ها.

رفتار سیستم چند کاربره

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

توجه : برای فعال یا غیرفعال کردن عملکردهای تلفن و پیامک برای یک کاربر ثانویه، به تنظیمات > کاربران بروید، کاربر را انتخاب کنید و تنظیمات مجاز به تماس تلفنی و پیامک را خاموش کنید.

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

هنگام استفاده از چندین کاربر در یک دستگاه Android، رفتار زیر را در نظر داشته باشید:

  • اعلان‌ها برای همه حساب‌های یک کاربر به طور همزمان ظاهر می‌شوند.
  • اعلان‌های سایر کاربران تا زمانی که فعال باشند ظاهر نمی‌شوند.
  • هر کاربر یک فضای کاری برای نصب و قرار دادن برنامه ها دریافت می کند.
  • هیچ کاربری به داده های برنامه کاربر دیگری دسترسی ندارد.
  • هر کاربری می تواند بر برنامه های نصب شده برای همه کاربران تأثیر بگذارد.
  • یک کاربر مدیر می تواند برنامه ها یا حتی کل فضای کاری ایجاد شده توسط کاربران ثانویه را حذف کند.
  • به طور پیش‌فرض، هنگام خروج از حالت مهمان، اطلاعات یک جلسه کاربر مهمان باقی نمی‌ماند. اگر می‌خواهید اطلاعات یک جلسه کاربر مهمان باقی بماند، باید یک فایل همپوشانی منبع ایجاد کنید که config_guestUserAllowEphemeralStateChange را روی false تنظیم کند. برای اطلاعات بیشتر در مورد ایجاد فایل های همپوشانی، به سفارشی سازی ساخت با پوشش های منابع مراجعه کنید.

چند کاربره Android Automotive

Android Automotive برای ارائه یک تجربه مشترک از دستگاه به پیاده سازی چند کاربره اندروید متکی است.

انواع کاربران خودرو

علاوه بر انواع کاربران ذکر شده در بالا، ساخت‌های Automotive برای این نوع کاربران قابل توجه است:

  • کاربر سیستم هدلس کاربر سیستم میزبان کلیه خدمات سیستم است. برای پشتیبانی از چندین کاربر در Automotive، کاربر سیستم نیز باید هدلس باشد. فقط یک کاربر بدون سر وجود دارد. یک کاربر سیستم بدون سر:
    • همیشه باید در پس‌زمینه اجرا شود.
    • کاربر نمی تواند مستقیماً حذف یا به آن دسترسی داشته باشد مگر در مورد تأمین دستگاه. برای مثال، کاربران نمی‌توانند برای انجام کارهایی مانند دانلود برنامه‌ها یا افزودن حساب‌ها، به این نوع کاربری تغییر حالت دهند.
    • فقط با تنظیم مجدد کارخانه پاک می شود.
  • کاربران معمولی همانند کاربران ثانویه ، که در بالا توضیح داده شد، با این تفاوت که کاربران ثانویه:
    • در پس‌زمینه اجرا نکنید (بعد از اینکه از آن جدا شدید).
    • می توان به طور مستقیم از طریق رابط کاربری ایجاد کرد.
    • داده‌های برنامه را از هم جدا کرده‌اید، اما برخی تنظیمات را در سراسر سیستم به اشتراک بگذارید. مثلا وای فای و بلوتوث.

هشدارها

استثنائات زیر برای کاربران سیستم بدون سر و کاربران عادی (ثانویه) در خودرو اعمال می شود:

  • کاربر سیستم بدون سر از نمایه های کاری پشتیبانی نمی کند.
  • به طور پیش فرض، کاربران عادی (ثانویه) به تماس های تلفنی و پیامک دسترسی کامل دارند.
  • به طور پیش فرض، کاربران عادی (ثانویه) در پس زمینه اجرا نمی شوند.

فعال کردن کاربر سیستم بدون سر

از اندروید 10، ویژگی چند کاربره را می توان برای موارد استفاده از خودرو استفاده کرد. تمایزات مهم عبارتند از:

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

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

وقتی کاربر بدون سر فعال است:
  1. برای اعلام اینکه دستگاه به عنوان Automotive است، ویژگی android.hardware.type.automotive را اضافه کنید.
  2. ro.fw.headless_system_user را روی true تنظیم کنید.
  3. مقدار config_multiuserMaximumUsers را روی 2 (یا بالاتر) تنظیم کنید.

برای اطلاعات بیشتر، به پشتیبانی چند کاربره در خودرو مراجعه کنید.

Android Automotive چند کاربره در نمایشگرهای متعدد

یک ویژگی آزمایشی جدید در Android 14 به کاربران ثانویه کامل (که کاربر پیش‌زمینه فعلی نیستند ) اجازه می‌دهد تا فعالیت‌ها را راه‌اندازی کنند و به رابط کاربری روی صفحه نمایشی که به آن اختصاص داده شده دسترسی داشته باشند. این ویژگی چندین کاربر همزمان در سیستم عامل Android Automotive را قادر می‌سازد تا از تجربه‌های داخل خودرو پشتیبانی کنند که تجربه رابط کاربری اختصاصی را در یک نمونه Android برای چندین مسافر فراهم می‌کند.

برای فعال کردن این ویژگی برای استفاده در توسعه، سازندگان دستگاه باید یک پوشش منبع برای جایگزینی مقدار زیر در frameworks/base/core/res/res/values/config.xml تعریف کنند:

<!-- Whether the device allows users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

می‌توانید با فعال کردن پیکربندی اضافی زیر، تجربه‌ای فقط برای مسافر (بدون راننده) را تجربه کنید:

<!-- Whether the device allows users to start in background visible on the default display.
    Should be false for all devices in production. Can be enabled only for development use
    in passenger-only automotive build (i.e., when Android runs in a separate system in the
    back seat to manage the passenger displays).
    When set to true, config_multiuserVisibleBackgroundUsers must also be true. -->

<bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>

در اندروید 14، می‌توانید تجربه داخل خودرو را برای چندین مسافر به عنوان کاربر مهمان فعال کنید. برای فعال کردن چندین کاربر مهمان برای استفاده در توسعه، سازندگان دستگاه باید یک پوشش منبعی تعریف کنند که حداکثر تعداد مجاز کاربران مهمان را در frameworks/base/core/res/res/xml/config_user_types.xml پیکربندی کند، مانند مثال زیر:

<user-types>
   <full-type
       name="android.os.usertype.full.GUEST"
       max-allowed='4'>
       <default-restrictions no_factory_reset="true"
           no_remove_user="true"
           no_modify_accounts="true"
           no_install_apps="true"
           no_install_unknown_sources="true"
           no_uninstall_apps="true"/>
   </full-type>
</user-types>