در Android 12، سرپرستان فناوری اطلاعات میتوانند نشان دادهها را ازطریق USB در دستگاههای متعلق به شرکت (بهجز عملکرد شارژ) غیرفعال کنند. برای پشتیبانی از این کارکرد، تولیدکنندگان تجهیزات اصلی باید «لایه انتزاع سختافزار» USB خود را بهروز کنند و از پشتیبانی اضافهشده برای «میاناهای برنامهسازی کاربردی مدیر خطمشی دستگاه» استفاده کنند.
مدیر خطمشی دستگاه
برای پشتیبانی از غیرفعال کردن نشاندهی ازطریق USB، سه API عمومی زیر در
DevicePolicyManager گنجانده شده است:
-
setUsbDataSignalingEnabled(boolean enabled)یک API است که با فراخوانی APIenableUsbDataSignalدرUsbManager، سیگنالدهی دادههای USB را فعال یا غیرفعال میکند. -
canUsbDataSignalingBeDisabled()یک API است که بررسی میکند آیا فعال یا غیرفعال کردن نشان داده USB در دستگاه پشتیبانی میشود یا نه. isUsbDataSignalingEnabled()یک API است که بررسی میکند آیا سیگنالدهی داده USB فعال شده است یا نه.- این مورد برای بررسی اینکه آیا پنجره گفتگوی شفافیت خطمشی نشان داده میشود یا نه لازم است. کاربران سیستم میتوانند یک متغیر پنهان را برای این میانای برنامهسازی کاربردی خاص فراخوانی کنند که میتواند توسط کاربر سیستم فراخوانی شود تا بررسی کند که آیا سیگنالدهی داده USB برای یک کاربر خاص فعال شده است یا نه.
- روی تنظیمات بزنید.
- روی دستگاههای متصل تکضرب بزنید.
- روی USB تکضرب بزنید.
نمونه پیادهسازی «مدیر خطمشی دستگاه»
در زیر نمونهای از نحوه پیادهسازی «مدیر خطمشی دستگاه» آورده شده است.
class android.app.admin.DevicePolicyManager {
/**
* Called by device owner or profile owner of an organization-owned managed profile to
* enable or disable USB data signaling for the device. When disabled, USB data connections
* (except from charging functions) are prohibited.
*
* <p> This API is not supported on all devices, the caller should call
* {@link #canUsbDataSignalingBeDisabled()} to check whether enabling or disabling USB data
* signaling is supported on the device.
*
* @param enabled whether USB data signaling should be enabled or not.
* @throws SecurityException if the caller is not a device owner or a profile owner on
* an organization-owned managed profile.
* @throws IllegalStateException if disabling USB data signaling is not supported or
* if USB data signaling fails to be enabled/disabled.
*/
public void setUsbDataSignalingEnabled(boolean enabled);
/**
* Called by device owner or profile owner of an organization-owned managed profile to return
* whether USB data signaling is currently enabled by the admin.
*
* @return {@code true} if USB data signaling is enabled, {@code false} otherwise.
*/
public boolean isUsbDataSignalingEnabled();
/**
* Called by the system to check whether USB data signaling is currently enabled for this user.
*
* @param userId which user to check for.
* @return {@code true} if USB data signaling is enabled, {@code false} otherwise.
* @hide
*/
public boolean isUsbDataSignalingEnabledForUser(@UserIdInt int userId);
/**
* Returns whether enabling or disabling USB data signaling is supported on the device.
*
* @return {@code true} if the device supports enabling and disabling USB data signaling.
*/
public boolean canUsbDataSignalingBeDisabled();
تنظیمات
کاربران میتوانند تنظیمات ترجیحی USB و اتصال را بهمحض اتصال USB تغییر دهند. برای دسترسی به صفحه اولویتهای USB، کارهای زیر را انجام دهید:
توجه: اگر USB متصل نباشد، اولویتهای USB قابلتغییر نیست و در پنجره «دستگاههای متصل» نشان داده نمیشود.
اگر سرپرست فناوری اطلاعات نشان داده USB را در دستگاه تحت مالکیت شرکت غیرفعال کند، کاربر نمیتواند ترجیحات USB خود را تغییر دهد. درعوض، همه اولویتهای USB در تنظیمات کاملاً غیرفعال میشود، که باعث ایجاد پنجره گفتگوی شفافیت خطمشی میشود.
توجه: اگر سیگنالدهی داده USB غیرفعال باشد، اشکالزدایی USB، پیکربندیهای پیشفرض USB، و اولویتهای مسیریابی صدای USB همگی در گزینههای توسعهدهنده غیرفعال خواهند شد.