יישום ניהול מכשירים

פרק זה מתאר כיצד לאפשר ולאמת תכונות ניהול התקנים הנדרשות לצורך הכנת מכשירים לפרופילים מנוהלים. הוא מכסה גם מקרים של משתמשים בעלי מכשיר חיוניים בסביבה ארגונית.

בנוסף לקוד AOSP, התקן דורש את הרכיבים הבאים כדי לתפקד עם פרופילים מנוהלים.

דרישות כלליות

התקנים המתכוונים לתמוך בניהול מכשירים צריכים לעמוד בדרישות הכלליות הבאות.

ערכי HAL תרמיים

אנדרואיד 7.0 ואילך כולל תמיכה ב- HardwarePropertiesManager API, ממשק API לניטור מכשירים ודיווחי בריאות המאפשר ליישומים לבדוק את מצב חומרת המכשיר. API זה חשוף באמצעות android.os.HardwarePropertiesManager ועושה שיחות דרך HardwarePropertiesManagerService אל HAL תרמית החומרה ( hardware/libhardware/include/hardware/thermal.h ). זהו API מוגן, כלומר בקר מדיניות מכשיר בעל המכשיר / פרופיל רק יישומים (DPC) וזרם VrListenerService אפשר לקרוא לזה.

כדי לתמוך ב- API של HardwarePropertiesManager, יישום HAL התרמי של המכשיר חייב להיות מסוגל לדווח על הערכים הבאים:

ערך סולם דיווח מאפשר
טמפרטורה של [מעבד | GPU | סוללה | עור המכשיר] טמפרטורת הרכיב במעלות צלזיוס אפליקציות יכולות לבדוק את טמפרטורות המכשיר ואת טמפרטורות החנק/כיבוי של רכיבים
מעבדים פעילים/סך הכל מופעל זמן באלפיות השנייה אפליקציות יכולות לבדוק את השימוש במעבד לכל ליבה
מהירות מאוורר סל"ד אפליקציות יכולות לבדוק את מהירות המאוורר

יישומים צריכים להתמודד כראוי עם מצבי ערכי דיווח כאשר ליבה (או GPU, סוללה, מאוורר) פועלת במצב לא מקוון או מחובר/מחובר לחשמל.

הפעלת ניהול מכשירים

כדי לאפשר ניהול התקנים, לוודא את הדברים הבאים uses-features מוכרזות:

  • android.software.device_admin
  • android.software.managed_users (תכונה מוכרזת אם ורק אם המכשיר יש לפחות 2 GB של זיכרון.)

כדי לאשר אלה uses-feature הערכים הוכרזו במכשיר, לרוץ: adb shell pm list features .

אפליקציות חיוניות בלבד

כברירת מחדל, רק יישומים חיוניים להפעלה נכונה של הפרופיל מופעלים כחלק מהקמת התקן מנוהל. זכרו, כול מופעי דוגמה _managed_profile.xml קבצים מתחת רלוונטיים רק אם android.software.managed_users מוכרז. יצרני OEM חייבים לוודא שהפרופיל או המכשיר המנוהל מכיל את כל היישומים הנדרשים על ידי שינוי:

vendor_required_apps_managed_profile.xml
vendor_required_apps_managed_device.xml
vendor_disallowed_apps_managed_profile.xml
vendor_disallowed_apps_managed_device.xml
/*
 * The following are for Android 9 and higher only
 */
vendor_required_apps_managed_user.xml
vendor_disallowed_apps_managed_user.xml

האפליקציות הנדרשות ואת ייחסמו בפני משתמשים הצליח מוחלים משתמשים משניים שנוצרו באמצעות DevicePolicyManager#createAndManageUser .

דוגמאות ממכשיר Nexus

אנדרואיד 8.x ואילך

pacakages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml

אנדרואיד 9 ומעלה

frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml
<resources>
  <!-- A list of apps to be retained on the managed device -->
  <string-array name="vendor_required_apps_managed_device">
    <item>com.android.vending</item> <!--­Google Play -->
    <item>com.google.android.gms</item> <!--­Required by Play -->
    <item>com.google.android.contacts</item> <!--­Google or OEM Contacts­-->
    <item>com.google.android.googlequicksearchbox</item> <!--­Google Launcher -->
    <item>com.google.android.launcher</item> <!--­Google Launcher or OEM Launcher -->
    <item>com.google.android.dialer</item> <!--­Google or OEM dialer to enable making phone calls -->
  </string-array>
</resources>

אנדרואיד 8.x ומעלה

packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml

אנדרואיד 9 ומעלה

frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml
<resources>
    <!-- A list of apps to be retained in the managed profile. This includes any Google experience apps required. -->
    <string-array name="vendor_required_apps_managed_profile">
        <item>com.android.vending</item> <!-- Google Play -->
        <item>com.google.android.gms</item> <!-- Required by Play -->
        <item>com.google.android.contacts</item> <!-- Google or OEM Contacts -->
    </string-array>
</resources>

דרישות משגר

עליך לעדכן את Launcher כדי לתמוך ביישומי תג עם סמל הסמל (המסופק ב- AOSP כדי לייצג את היישומים המנוהלים) ואלמנטים אחרים של ממשק משתמש כגון תג עדכונים והתראות. אם אתה משתמש launcher3 ב AOSP ללא שינויים, אז אתה כבר צפוי לתמוך בתכונת התגים הזה.

דרישות NFC

התקנים עם NFC חייבים לאפשר NFC במהלך החוויה מחוץ לקופסה (כלומר, אשף ההתקנה) ולהיות מוגדרים לקבל כוונות הקצאה מנוהלות:

packages/apps/Nfc/res/values/provisioning.xml
<bool name="enable_nfc_provisioning">true</bool>
<item>application/com.android.managedprovisioning</item>

דרישות התקנה

התקנים הכוללים חוויה מחוץ לקופסה (כלומר, אשף ההתקנה) צריכים ליישם הקצאת בעלים של מכשירים. כאשר חווית הקופסה נפתחת, עליה לבדוק אם תהליך אחר (כגון הקצאת בעלים של מכשירים) כבר סיים את הגדרת המשתמש, ואם כן, עליו לפטר כוונה ביתית ולסיים את ההתקנה. כוונה זו נלכדת על ידי אפליקציית ההקצאה, אשר מעבירה את השליטה לבעל המכשיר החדש שהוגדר.

כדי לעמוד בדרישות ההתקנה, הוסף את הקוד הבא לפעילות העיקרית של הגדרת המכשיר:

@Override
   protected void onStart() {
        super.onStart();

        // When returning to a setup wizard activity, check to see if another setup process
        // has intervened and, if so, complete an orderly exit
        boolean completed = Settings.Secure.getInt(getContentResolver(),
                Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
        if (completed) {
           startActivity(new Intent(Intent.ACTION_MAIN, null)
                .addCategory(Intent.CATEGORY_HOME)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED));
           finish();
       }

       ...
   }