اندروید 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 تبدیل می کند.