ฟีเจอร์ต่างๆ ในคู่มือนี้จะอธิบายการจัดการเครือข่ายและโทรศัพท์ ความสามารถที่คุณสามารถนำไปใช้ในนโยบายด้านอุปกรณ์ Controller (DPC) เอกสารนี้มีโค้ด และคุณยังสามารถใช้การทดสอบ แอป DPC ในฐานะ แหล่งที่มาของโค้ดตัวอย่างสำหรับฟีเจอร์ระดับองค์กรของ Android
แอป DPC สามารถทำงานในโหมดเจ้าของโปรไฟล์ในอุปกรณ์ส่วนตัวหรือในอุปกรณ์เจ้าของ ในอุปกรณ์ที่มีการจัดการครบวงจร ตารางนี้ระบุว่าฟีเจอร์ใด พร้อมใช้งานเมื่อ DPC ทำงานในโหมดเจ้าของโปรไฟล์หรือเจ้าของอุปกรณ์ โหมดต่อไปนี้
ฟีเจอร์ | เจ้าของโปรไฟล์ | เจ้าของอุปกรณ์ |
เข้าถึงรายชื่อติดต่อของที่ทำงาน ในโปรไฟล์ต่างๆ | ✓ | |
ตรวจสอบให้แน่ใจว่า การเชื่อมต่อเครือข่ายที่ปลอดภัยสำหรับการจราจรของข้อมูล | ✓ | ✓ |
ตั้งค่า รหัสเครือข่ายไร้สายเดียวในภูมิภาคต่างๆ | ✓ | ✓ |
ระบุ แป้นโทรศัพท์แยกต่างหากสำหรับโปรไฟล์งาน | ✓ |
เข้าถึงรายชื่อติดต่อที่ทำงานในโปรไฟล์ต่างๆ
EMM สามารถอนุญาตให้โปรไฟล์ส่วนตัวของผู้ใช้เข้าถึงรายชื่อติดต่อสำหรับงานเพื่อให้ เข้าถึงรายชื่อติดต่อส่วนตัวและที่ทํางานของผู้ใช้ได้ผ่านการค้นหาในพื้นที่และ การค้นหาไดเรกทอรีระยะไกล ในอุปกรณ์ส่วนตัว แป้นโทรศัพท์เดียวในอุปกรณ์ส่วนตัว สามารถโทรออกและรับสายส่วนตัว รวมถึงโทรศัพท์สำหรับงานได้ นอกจากนี้ ข้อมูลติดต่อที่ทำงานจะผสานรวมอยู่ใน UI ของระบบ หากโปรไฟล์งานคือ มีการเข้ารหัส โปรไฟล์ส่วนตัวจะไม่สามารถเข้าถึงข้อมูลได้
ผสานรวมกับ UI ของระบบ
UI ของระบบจะระบุว่ามีสายเรียกเข้างานโดยใช้ไอคอนกระเป๋าเอกสาร
callLog
ยังแสดง
เพื่อกำหนดสายเรียกเข้าและสายโทรออกงาน แป้นโทรศัพท์ส่วนบุคคลและ
แอปรายชื่อติดต่อสามารถแสดงข้อมูลหมายเลขผู้โทรของผู้ติดต่อที่ทำงานโดยใช้รีโมต
ค้นหาไดเรกทอรี จึงไม่จำเป็นต้องซิงค์รายชื่อติดต่ออยู่แล้วกับ
อุปกรณ์ในเครือข่ายเดียวกัน แอปรับส่งข้อความสามารถใช้หมายเลขผู้โทรในอุปกรณ์และค้นหาได้
คำจำกัดความความเข้ากันได้กับ Android เอกสาร (CDD) มีข้อกำหนด เพื่อให้รายชื่อติดต่อของที่ทำงานแสดงในแป้นโทรศัพท์เริ่มต้น และข้อกำหนดที่ รายชื่อติดต่อและแอปรับส่งข้อความจะมีป้ายระบุว่ามาจากที่ทำงาน โปรไฟล์
รายชื่อติดต่อของที่ทำงานเข้าถึงและค้นหาได้
ผู้ใช้สามารถเข้าถึงและโทรหาผู้ติดต่อสำหรับงานได้จากโปรไฟล์ส่วนตัว แสดงในหน้าจอค้นหาของแอปโทรศัพท์ ผู้ใช้ค้นหางานได้ รายชื่อติดต่อโดยใช้การเติมข้อความอัตโนมัติ ซึ่งซิงค์กับอุปกรณ์และแสดงอยู่ในรายการ ผ่านการค้นหาไดเรกทอรีระยะไกล
ควบคุมรายชื่อติดต่อสำหรับงานในโปรไฟล์หลัก
DPC จะควบคุมสิทธิ์ในการค้นหารายชื่อติดต่อสำหรับงาน กำลังทำงานในเจ้าของโปรไฟล์ DPC จะจัดการการแสดงรายชื่อติดต่อสำหรับงานในโปรไฟล์ส่วนตัว สำหรับข้อมูลเพิ่มเติม โปรดดู สร้างนโยบายด้านอุปกรณ์
ระบบจะเปิดใช้การค้นหารายชื่อติดต่อสำหรับงานด้วยโปรไฟล์ส่วนตัวโดยค่าเริ่มต้น
หากต้องการดูการตั้งค่านโยบาย ให้ใช้
DevicePolicyManager.getCrossProfileContactsSearchDisabled()
หากต้องการเปิดหรือปิดใช้การค้นหารายชื่อติดต่อสำหรับงานตามโปรไฟล์ส่วนตัว ให้ใช้
DevicePolicyManager.setCrossProfileContactsSearchDisabled()
ตรวจสอบการเชื่อมต่อเครือข่ายที่ปลอดภัยสำหรับการจราจรของข้อมูล
การทำงานในโหมดเจ้าของอุปกรณ์หรือโหมดเจ้าของโปรไฟล์ นโยบายด้านอุปกรณ์ ตัวควบคุมสามารถใช้การเชื่อมต่อ Virtual Private Network (VPN) แบบเปิดตลอดเวลาเพื่อ บังคับให้แอปพลิเคชันส่งผ่านการจราจรของข้อมูลผ่านแอป VPN ที่ระบุซึ่งไม่สามารถ ข้าม การใช้การเชื่อมต่อ VPN แบบเปิดตลอดเวลาทำให้ DPC สามารถดูแลให้เครือข่าย การเข้าชมจากโปรไฟล์งานหรืออุปกรณ์ที่มีการจัดการจะส่งผ่านบริการ VPN และ โดยไม่ต้องให้ผู้ใช้จัดการ ขั้นตอนนี้จะสร้างการเชื่อมต่อเครือข่ายที่ปลอดภัยสำหรับ การเข้าชมอย่างต่อเนื่องภายในโปรไฟล์งาน
เกี่ยวกับการเชื่อมต่อ VPN แบบเปิดตลอดเวลา
ในกรอบการทำงานของระบบ การกำหนดเส้นทาง VPN จะได้รับการจัดการโดยอัตโนมัติเพื่อให้
ผู้ใช้ไม่สามารถข้ามบริการ VPN ได้ หากยกเลิกการเชื่อมต่อบริการ VPN ขณะอยู่ใน
ทำให้การเข้าชมรั่วไหลไปยังอินเทอร์เน็ตสาธารณะไม่ได้ สำหรับแอปพลิเคชัน
การใช้
VpnService
,
การเชื่อมต่อ VPN ตลอดเวลาเป็นเฟรมเวิร์กสำหรับการจัดการการเชื่อมต่อ VPN ที่ปลอดภัยผ่าน
เซิร์ฟเวอร์ที่ไว้วางใจได้และให้บริการต่อไป บริการ VPN จะรีสตาร์ทโดยอัตโนมัติ
โดยไม่คำนึงว่าจะเชื่อมต่อผ่าน Wi-Fi หรือ
เครือข่ายมือถือ และหากรีบูตอุปกรณ์ เฟรมเวิร์กจะรีสตาร์ทการเชื่อมต่อ VPN
การเชื่อมต่อกับบริการ VPN มีความโปร่งใสต่อผู้ใช้ สำหรับ อุปกรณ์ของบริษัท ผู้ใช้ไม่จำเป็นต้องยืนยันกล่องโต้ตอบความยินยอมสำหรับ VPN ในโหมดเปิดตลอดเวลา การตั้งค่าเครือข่าย VPN ของผู้ใช้ ช่วยในการเปิดใช้ การเชื่อมต่อแบบเปิดตลอดเวลาด้วยตนเอง
หาก DISALLOW_CONFIG_VPN
true
ป้องกันไม่ให้ผู้ใช้กำหนดค่า VPN เปิดใช้
DISALLOW_DEBUGGING_FEATURES
เพื่อจำกัดผู้ใช้ไม่ให้ลบล้าง VPN แบบเปิดตลอดเวลาโดยใช้คำสั่งการแก้ไขข้อบกพร่อง adb
หากไม่ต้องการให้ผู้ใช้ถอนการติดตั้ง VPN โปรดโทร
DevicePolicyManager.setUninstallBlocked
ตั้งค่าบริการ VPN
องค์กรที่ใช้โซลูชันสำหรับองค์กรสำหรับ Android ของคุณเป็นผู้ตั้งค่า VPN
- ติดตั้งแอป VPN ที่ใช้งาน
VpnService
คุณสามารถค้นหาบริการ VPN ที่ใช้งานอยู่ได้โดยใช้ตัวกรอง Intent ที่ตรงกับ การกระทำVpnService.SERVICE_INTERFACE
- ประกาศ
VpnService
ในไฟล์ Manifest ของแอปที่ปกป้องโดยสิทธิ์BIND_VPN_SERVICE
- กําหนดค่า
VpnService
ดังนั้นระบบจึงเริ่มต้น หลีกเลี่ยงการตั้งค่าแอป VPN ให้เริ่มทำงานเองโดย คอยฟังการเปิดเครื่องและควบคุมวงจรชีวิตของตัวเอง - ตั้งค่าช่องที่มีการจัดการ การกำหนดค่าสำหรับ แอป VPN (ดูตัวอย่างด้านล่าง)
เปิดใช้การเชื่อมต่อ VPN ตลอดเวลา
DPC สามารถกำหนดค่าการเชื่อมต่อ VPN แบบเปิดตลอดเวลาผ่านทางแอปเฉพาะได้โดย
การโทร
DevicePolicyManager.setAlwaysOnVpnPackage()
ระบบจะให้สิทธิ์การเชื่อมต่อนี้โดยอัตโนมัติและจะยังคงอยู่หลังจากการรีบูต ถ้า
lockdownEnabled
เป็นเท็จ การจราจรของข้อมูลในเครือข่ายอาจไม่ปลอดภัยตั้งแต่เวลาที่
โทรศัพท์จะรีบูตและ VPN จะเชื่อมต่อ ซึ่งจะเป็นประโยชน์ในกรณีที่คุณไม่อยากหยุด
การเชื่อมต่อเครือข่ายเมื่อใดก็ตามที่ VPN ล้มเหลว หรือหาก VPN ไม่จำเป็น
ยืนยันการเชื่อมต่อ VPN แบบเปิดตลอดเวลา
DPC สามารถอ่านชื่อแพ็กเกจที่ใช้ VPN แบบเปิดตลอดเวลา
การเชื่อมต่อสำหรับผู้ใช้ปัจจุบันกับ
DevicePolicyManager.getAlwaysOnVpnPackage().
หากไม่มีแพ็กเกจดังกล่าว หรือมีการสร้าง VPN ภายในการตั้งค่าระบบ
แอป null
ส่งคืนแล้ว
ตัวอย่าง
โดย AlwaysOnVpnFragment.java
จะใช้ API เหล่านี้เพื่อเปิดใช้การตั้งค่าสำหรับการเชื่อมต่อ VPN แบบเปิดตลอดเวลาในแอป TestDPC
ในตัวอย่างต่อไปนี้:
- บัญชีที่มีการจัดการ
ของการตั้งค่า
บริการ VPN ได้รับการตั้งค่าโดย
DevicePolicyManager
โดยใช้setApplicationRestrictions()
- การกำหนดค่าที่มีการจัดการใช้คู่คีย์-ค่าที่กำหนดเองและแอปตัวอย่างนี้ ใช้ VPN ในที่อื่นๆ เพื่อกำหนดการตั้งค่าเครือข่ายของ VPN (โปรดดู ตรวจสอบการกำหนดค่าที่มีการจัดการ)
- ตัวอย่างนี้เพิ่มโปรแกรมติดตั้งแพ็กเกจ Android ลงในรายการที่ปฏิเสธเพื่อไม่ให้ อัปเดตแพ็กเกจระบบผ่าน VPN การจราจรของข้อมูลในเครือข่ายทั้งหมดของผู้ใช้ภายใน โปรไฟล์งานหรืออุปกรณ์จะต้องผ่านแอป VPN นี้ ยกเว้นแพ็กเกจ โปรแกรมติดตั้ง การอัปเดตของแอปจะใช้อินเทอร์เน็ตแบบเปิด
- จากนั้น
DevicePolicyManager
จะเปิดใช้การเชื่อมต่อ VPN แบบเปิดตลอดเวลาสำหรับ แพ็กเกจ VPN ที่ใช้setAlwaysOnVpnPackage()
, และเปิดใช้โหมดปิดล็อก
Kotlin
// Set VPN's managed configurations val config = Bundle().apply { putString(Extras.VpnApp.ADDRESS, "192.0.2.0") putString(Extras.VpnApp.IDENTITY, "vpn.account1") putString(Extras.VpnApp.CERTIFICATE, "keystore://auth_certificate") putStringArray(Extras.VpnApp.DENYLIST, arrayOf("com.android.packageinstaller")) } val dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val admin = myDeviceAdminReceiver.getComponentName(this) // Name of package to update managed configurations val vpnPackageName = "com.example.vpnservice" // Associate managed configurations with DeviceAdminReceiver dpm.setApplicationRestrictions(admin, vpnPackageName, config) // Enable always-on VPN connection through VPN package try { val lockdownEnabled = true dpm.setAlwaysOnVpnPackage(admin, vpnPackageName, lockdownEnabled) } catch (ex: Exception) { throw PolicyException() }
Java
// Set VPN's managed configurations final Bundle config = new Bundle(); config.putString(Extras.VpnApp.ADDRESS, "192.0.2.0"); config.putString(Extras.VpnApp.IDENTITY, "vpn.account1"); config.putString(Extras.VpnApp.CERTIFICATE, "keystore://auth_certificate"); config.putStringArray(Extras.VpnApp.DENYLIST, new String[]{"com.android.packageinstaller"}); DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName admin = myDeviceAdminReceiver.getComponentName(this); // Name of package to update managed configurations final String vpnPackageName = "com.example.vpnservice"; // Associate managed configurations with DeviceAdminReceiver dpm.setApplicationRestrictions(admin, vpnPackageName, config); // Enable always-on VPN connection through VPN package try { boolean lockdownEnabled = true; dpm.setAlwaysOnVpnPackage(admin, vpnPackageName, lockdownEnabled)); } catch (Exception ex) { throw new PolicyException(...); }
ตั้งค่ารหัสเครือข่ายไร้สายรหัสเดียวในภูมิภาคต่างๆ
การทำงานในโหมดเจ้าของอุปกรณ์หรือโหมดเจ้าของโปรไฟล์ นโยบายด้านอุปกรณ์ ผู้ควบคุมข้อมูล (DPC) สามารถเชื่อมโยงใบรับรองของผู้ออกใบรับรอง (CA) หลายรายการ ด้วยการกำหนดค่าเครือข่ายไร้สายรายการเดียว ในการกำหนดค่าแบบนี้ อุปกรณ์ สามารถเชื่อมต่อกับจุดเข้าใช้งานแบบไร้สายที่มีชื่อเครือข่ายเหมือนกัน หรือ Service Set Identifier (SSID) แต่กําหนดค่าด้วย CA อื่น ใบรับรอง วิธีนี้มีประโยชน์หากเครือข่ายไร้สายขององค์กรมีลักษณะดังนี้ ในหลายพื้นที่ โดยแต่ละภูมิภาคจำเป็นต้องใช้ ผู้ออกใบรับรอง ตัวอย่างเช่น ลายเซ็นทางกฎหมายอาจต้องมี ที่จำเป็นต้องใช้ CA ระดับภูมิภาค
หมายเหตุ: Android มีการสนับสนุน
setCaCertificate
ตั้งแต่ API 18 (Jelly Bean) แต่ผู้ดูแลระบบไอทีต้องจัดสรรเครือข่าย
แยกต่างหากในแต่ละ CA เพื่อให้แน่ใจว่าอุปกรณ์มีการตรวจสอบสิทธิ์ที่ราบรื่นในแต่ละ CA
โดยไม่พิจารณาภูมิภาค
ระบุใบรับรอง CA เพื่อระบุเซิร์ฟเวอร์
เพื่อระบุรายการใบรับรอง X.509 ที่ระบุเซิร์ฟเวอร์ที่ใช้
SSID ให้รวม CA ที่เกี่ยวข้องทั้งหมดในการกำหนดค่าแบบไร้สายโดยใช้ WifiEnterpriseConfig.setCaCertificates()
ใบรับรองของเซิร์ฟเวอร์จะถูกต้องหาก CA ของเซิร์ฟเวอร์ตรงกับใบรับรองที่ระบุ
ระบบจะกำหนดชื่อเริ่มต้นให้กับใบรับรองโดยอัตโนมัติและใช้ภายใน
การกำหนดค่า
WifiManager
ติดตั้งใบรับรองและบันทึกการกำหนดค่าโดยอัตโนมัติเมื่อ
เครือข่ายเปิดใช้อยู่ และนำใบรับรองออกเมื่อมีการกำหนดค่า
ลบแล้ว
ในการรับใบรับรอง CA ทั้งหมดที่เชื่อมโยงกับการกำหนดค่าแบบไร้สาย ให้ใช้
WifiEnterpriseConfig.getCaCertificates()
เพื่อแสดงรายการ
X509Certificate
ออบเจ็กต์
เพิ่มการกำหนดค่าแบบไร้สายโดยใช้ใบรับรอง CA หลายรายการ
- ยืนยันตัวตนของเซิร์ฟเวอร์โดยทำดังนี้
- โหลดใบรับรอง X.509 CA
- โหลดคีย์ส่วนตัวและใบรับรองของไคลเอ็นต์ โปรดดูตัวอย่างวิธีการอ่านไฟล์ใบรับรองในการรักษาความปลอดภัยด้วย HTTPS และ SSL
- สร้างใหม่
WifiConfiguration
แล้วตั้งค่า SSID และการจัดการคีย์ - ตั้งค่า
WifiEnterpriseConfig
อินสแตนซ์ในWifiConfiguration
นี้- ระบุเซิร์ฟเวอร์ด้วยลิสต์
X509Certificate
ออบเจ็กต์ที่ใช้setCaCertificates()
- ตั้งค่าข้อมูลเข้าสู่ระบบไคลเอ็นต์ ข้อมูลระบุตัวตน และรหัสผ่าน
- ตั้งค่า Extensible Authentication Protocol (EAP) และวิธีการระยะที่ 2 เป็น ในการสร้างการเชื่อมต่อ
- ระบุเซิร์ฟเวอร์ด้วยลิสต์
- เพิ่มเครือข่ายที่มี
WifiManager
- เปิดใช้เครือข่าย WifiManager จะบันทึกการกำหนดค่าโดยอัตโนมัติในระหว่าง การตั้งค่า
ตัวอย่างนี้เชื่อมโยงขั้นตอนเข้าด้วยกัน
Kotlin
// Verify the server's identity val caCert0 = getCaCert("cert0.crt") val caCert1 = getCaCert("cert1.crt") val clientKey = getClientKey() val clientCert = getClientCert() // Create Wi-Fi configuration val wifiConfig = WifiConfiguration().apply { SSID = "mynetwork" allowedKeyManagement.set(KeyMgmt.WPA_EAP) allowedKeyManagement.set(KeyMgmt.IEEE8021X) // Set up Wi-Fi enterprise configuration enterpriseConfig.setCaCertificates(arrayOf<X509Certificate>(caCert0, caCert1)) enterpriseConfig.setClientKeyEntry(clientKey, clientCert) enterpriseConfig.setIdentity("myusername") enterpriseConfig.setEapMethod(Eap.TLS) enterpriseConfig.setPhase2Method(Phase2.NONE) } // Add network val wifiManager = getSystemService(Context.WIFI_SERVICE) as WifiManager val netId = wifiManager.addNetwork(wifiConfig) // Enable network if (netId < 0) { // Error creating new network } else { wifiManager.enableNetwork(netId, true) }
Java
// Verify the server's identity X509Certificate caCert0 = getCaCert("cert0.crt"); X509Certificate caCert1 = getCaCert("cert1.crt"); PrivateKey clientKey = getClientKey(); X509Certificate clientCert = getClientCert(); // Create Wi-Fi configuration WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = "mynetwork"; wifiConfig.allowedKeyManagement.set(KeyMgmt.WPA_EAP); wifiConfig.allowedKeyManagement.set(KeyMgmt.IEEE8021X); // Set up Wi-Fi enterprise configuration wifiConfig.enterpriseConfig.setCaCertificates(new X509Certificate[] {caCert0, caCert1}); wifiConfig.enterpriseConfig.setClientKeyEntry(clientKey, clientCert); wifiConfig.enterpriseConfig.setIdentity("myusername"); wifiConfig.enterpriseConfig.setEapMethod(Eap.TLS); wifiConfig.enterpriseConfig.setPhase2Method(Phase2.NONE); // Add network WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); int netId = wifiManager.addNetwork(wifiConfig); // Enable network if (netId < 0) { // Error creating new network } else { wifiManager.enableNetwork(netId, true); }
ระบุแป้นโทรศัพท์แยกต่างหากสำหรับโปรไฟล์งาน
คุณสามารถอนุญาตแอปพลิเคชันแป้นโทรศัพท์แยกต่างหากเพื่อใช้ในโปรไฟล์งาน
ซึ่งอาจเป็นตัวโทรศัพท์ หรือแอป Voice over IP (VoIP) ที่ใช้
ConnectionService
API สำหรับแบ็กเอนด์การเรียกใช้ ซึ่งจะมีแป้นหมายเลข UI ของระบบที่ผสานรวมให้เหมือนกัน
ในการใช้งานแอปพลิเคชัน VoIP ในโปรไฟล์งานได้อย่างมีประสิทธิภาพ
แป้นโทรศัพท์ ฟีเจอร์หลัก สายเรียกเข้าในบัญชีงาน
ที่ต่างจากสายเรียกเข้าไปยังบัญชีการโทรส่วนตัว
ผู้ใช้เลือกที่จะโทรออกและรับสายจากแป้นโทรศัพท์สำหรับงานในรายการที่อนุญาตได้
บัญชีโทรศัพท์ การโทรทั้งหมดจากแป้นโทรศัพท์หรือสายเรียกเข้าไปที่ที่ทำงาน
และบันทึกไว้ในโปรไฟล์งาน
CallLog
แป้นโทรศัพท์งานจะเก็บบันทึกการโทรเฉพาะงานไว้ โดยมีสิทธิ์เข้าถึง
ข้อมูลติดต่อที่ทำงาน การโทรแบบเปลี่ยนวงจรขาเข้าจะจัดการโดยแป้นโทรศัพท์หลัก
และเก็บไว้ในบันทึกการโทรส่วนตัว หากลบโปรไฟล์งาน ประวัติการโทร
ที่เชื่อมโยงกับโปรไฟล์งานนั้น ระบบจะลบด้วย รวมถึงโปรไฟล์งานทั้งหมด
แอปของบุคคลที่สามต้องใช้ ConnectionService
แอป VoIP ของบุคคลที่สามที่ต้องโทรออกและต้องรับสายเหล่านั้น
ที่ผสานรวมไว้ในแอปโทรศัพท์ในตัวสามารถใช้
ConnectionService
API ซึ่งจำเป็นสำหรับบริการ VoIP ที่ใช้โทรในที่ทำงาน แอปเหล่านี้
จะได้ประโยชน์จากการโทรเหล่านี้เหมือนใช้
การโทรผ่านเครือข่ายมือถือแบบดั้งเดิม
ตัวอย่างเช่น ข้อความจะปรากฏในแป้นโทรศัพท์ในตัวและบันทึกการโทร หาก
การใช้งานแอป
ConnectionService
ในโปรไฟล์งาน จะเข้าถึงได้โดยแป้นโทรศัพท์เท่านั้น
ติดตั้งในโปรไฟล์งานนั้น
เมื่อนักพัฒนาแอปนำไปใช้
ConnectionService
,
ควรเพิ่มไฟล์ดังกล่าวลงในไฟล์ Manifest ของแอปและลงทะเบียน
วันที่ PhoneAccount
พร้อมด้วย
TelecomManager
บัญชีโทรศัพท์เป็นวิธีการโทรหรือรับสายที่แตกต่างออกไป
และอาจมี PhoneAccounts
ได้หลายรายการสำหรับแต่ละรายการ
ConnectionService
หลังจากลงทะเบียนบัญชีโทรศัพท์แล้ว
เปิดใช้ได้ผ่านการตั้งค่าแป้นโทรศัพท์
การผสานรวม UI ของระบบและการแจ้งเตือน
UI ของระบบช่วยให้ผู้ใช้ได้รับประสบการณ์การโทรที่สอดคล้องกันและผสานรวมกันอย่างลงตัว
สำหรับแอปของบุคคลที่สามที่ใช้
ConnectionService
API เป็นแบ็กเอนด์เพื่อโทรออก หากใช้แอปในโปรไฟล์งาน ก็หมายถึงกระเป๋าเอกสาร
แสดงเมื่อมีสายเรียกเข้าและในแถบสถานะ แอปที่ใช้
ConnectionService
ที่ติดตั้งในโปรไฟล์งานสามารถใช้
แป้นโทรศัพท์ของระบบหรือสร้างแป้นโทรศัพท์สำหรับงานแยกต่างหาก ซึ่งอาจเป็นแอปเดียวหรือ
แยกกัน
แอปพลิเคชันแป้นโทรศัพท์จะกำหนดว่าแอปดังกล่าวกำลังโทรออกหรือรับสายของที่ทำงานโดย
กำลังตรวจหาธง
android.telecom.Call.Details.PROPERTY_ENTERPRISE_CALL
หากเป็นการโทรสำหรับงาน แป้นโทรศัพท์จะระบุข้อมูลนี้ให้กับผู้ใช้โดยเพิ่ม
ป้ายบริษัท (ไอคอนกระเป๋าเอกสาร):
Kotlin
// Call placed through a work phone account. getCurrentCall() is defined by the // dialer. val call = getCurrentCall() if (call.hasProperty(android.telecom.Call.Details.PROPERTY_ENTERPRISE_CALL)) { // Set briefcase icon }
Java
// Call placed through a work phone account. getCurrentCall() is defined by the // dialer. Call call = getCurrentCall(); if (call.hasProperty(android.telecom.Call.Details.PROPERTY_ENTERPRISE_CALL)) { // Set briefcase icon }