اندروید 11 مفهوم انواع کاربری کاملاً تعریف شده را معرفی کرده است که نشان دهنده همه انواع مختلف کاربران مجاز توسط ویژگی چند کاربر اندروید است. با این ویژگی، OEM ها می توانند انواع کاربر AOSP از پیش تعریف شده را سفارشی کنند و انواع پروفایل های جدید را تعریف کنند. برای اطلاعات بیشتر به بخش انواع کاربر مراجعه کنید.
این صفحه دستورالعملهای پیادهسازی مورد نیاز برای سفارشیسازی انواع کاربر را شرح میدهد.
سفارشی سازی
به منظور سفارشی کردن انواع کاربر AOSP و تعریف انواع نمایه جدید، OEM باید config_user_types.xml با سفارشی سازی های ترجیحی پوشش دهد. فایل config_user_types.xml حاوی یک پیاده سازی مرجع و یک لیست جامع از ویژگی های قابل تنظیم است.
هر ویژگی، مانند default-restrictions که در فایل config_user_types.xml مشخص شده باشد، پیشفرض AOSP را بازنویسی میکند. هر ویژگی که مشخص نشده باشد، از پیش فرض AOSP تبعیت می کند. تغییر بیشتر ویژگیها، مانند ویژگیهای نشان نوع نمایه، بر کاربران از قبل موجود آن نوع کاربری تأثیر میگذارد. با این حال، از آنجایی که default-restrictions تنها در زمان ایجاد کاربر اعمال میشوند، تغییر این ویژگی خاص، در صورتی که فایل config_user_types.xml توسط OTA تغییر کند، هیچ تأثیری بر کاربران قبلی ندارد. به طور مشابه، تعیین حداکثر تعداد کاربران فقط در هنگام ایجاد کاربران جدید اعمال می شود. کاربران موجود حذف نمی شوند
محدودیت های سفارشی سازی فعلی برای هر نوع کاربر به شرح زیر است:
- نمایه ها را می توان به طور کامل سفارشی و تعریف کرد. در این مورد، OEM مسئول ایجاد تغییرات پلت فرم برای پشتیبانی از نمایه سفارشی آن در اندروید است، زیرا AOSP فقط از انواع کاربر AOSP از پیش تعریف شده پشتیبانی می کند.
- کاربران کامل را نمی توان تعریف کرد و فقط ویژگی
default-restrictionsآنها را می توان سفارشی کرد. - کاربر سیستم را نمی توان با استفاده از این مکانیسم سفارشی کرد. در این مورد،
default-restrictionsمیتوان با استفاده ازcom.android.internal.R.array.config_defaultFirstUserRestrictionsتنظیم کرد. برای اطلاعات بیشتر بهconfig.xmlمراجعه کنید.
انواع کاربران موجود را اصلاح کنید
همانطور که در نمونه کد زیر نشان داده شده است، می توان انواع کاربر موجود را با نادیده گرفتن ویژگی های آنها سفارشی کرد:
<user-types version="0">
<full-type name="android.os.usertype.full.SECONDARY" >
<default-restrictions no_sms="true" />
</full-type>
<profile-type
name='android.os.usertype.profile.MANAGED'
max-allowed-per-parent='2'
icon-badge='@android:drawable/ic_corp_icon_badge_case'
badge-plain='@android:drawable/ic_corp_badge_case'
badge-no-background='@android:drawable/ic_corp_badge_no_background' >
<badge-labels>
<item res='@android:string/managed_profile_label_badge' />
<item res='@android:string/managed_profile_label_badge_2' />
</badge-labels>
<badge-colors>
<item res='@android:color/profile_badge_1' />
<item res='@android:color/profile_badge_2' />
</badge-colors>
<default-restrictions no_sms="true" no_outgoing_calls="true" />
</profile-type>
</user-types>
در این نمونه کد، انواع کاربران AOSP زیر با تغییر ویژگی های پشتیبانی شده سفارشی می شوند:
کاربر کامل
android.os.usertype.full.SECONDARY:- محدودیت پیشفرض
no_smsبا تعیینdefault-restrictions no_sms="true"روی true تنظیم میشود.
- محدودیت پیشفرض
نمایه کاربر
android.os.usertype.profile.MANAGED:- دو نمایه برای هر کاربر والدین با تنظیم
max-allowed-per-parent='2'مجاز است. - مشخصههای نشان با استفاده از
icon-badge،badge-plain،badge-no-background،badge-labels،badge-colorsروی مقادیر انتخابی تنظیم میشوند. - محدودیتهای پیشفرض
no_smsوno_outgoing_callsبا تعیینdefault-restrictions no_sms="true" no_outgoing_calls="true"روی true تنظیم میشوند.
- دو نمایه برای هر کاربر والدین با تنظیم
برای معنی و مقادیر پیش فرض این ویژگی ها به UserTypeFactory.java و UserTypeDetails.java مراجعه کنید.
انواع پروفایل های سفارشی را تعریف کنید
نمونه کد زیر نشان می دهد که چگونه انواع پروفایل های جدید و سفارشی تعریف شده اند:
<user-types version="1">
<profile-type
name="com.example.profilename"
max-allowed-per-parent="2" />
<change-user-type
from="android.os.usertype.profile.MANAGED"
to="com.example.profilename"
whenVersionLeq="1" />
</user-types>
در این نمونه کد، نوع پروفایل com.example.profilename به صورت زیر تعریف شده است:
max-allowed-per-parentsبرای دو نمایه برای هر کاربر والدین روی2تنظیم شده است.change-user-type: تمام نمایه های مدیریت شده موجود از نوعandroid.os.usertype.profile.MANAGEDرا به نوع جدیدcom.example.profilenameهنگام ارتقای دستگاه از یک نسخهuser-type<= 1از طریق OTA تبدیل می کند.