( แก้ไข:อัปเดตหลังจากมีการทดสอบเพิ่มเติม)
ตรวจสอบเอกสารล่าสุด
ดูเหมือนว่าคุณสมบัตินี้จะเรียกว่าการปักหมุดหน้าจอทันทีและแอพไม่จำเป็นต้องเป็นเจ้าของอุปกรณ์ หากเจ้าของอุปกรณ์ไม่ได้ตั้งค่าผู้ใช้จะได้รับแจ้งให้ยอมรับ แต่มีปัญหาสำหรับการใช้งานคีออสก์ดังกล่าวข้างล่าง
มีสองวิธีในการเปิดใช้งานการตรึงหน้าจอ:
ด้วยตนเอง: ผู้ใช้สามารถเปิดใช้งานการปักหน้าจอในการตั้งค่า> ความปลอดภัย> การปักหมุดหน้าจอและเลือกงานที่ต้องการปักหมุดโดยแตะที่ไอคอนหมุดสีเขียวในหน้าจอล่าสุด โดยทางโปรแกรม: ในการเปิดใช้งานการปักหน้าจอแบบเป็นโปรแกรมให้โทร startLockTask () จากแอปของคุณ หากแอปที่ร้องขอไม่ใช่เจ้าของอุปกรณ์ผู้ใช้จะได้รับแจ้งให้ยืนยัน แอพเจ้าของอุปกรณ์สามารถเรียกใช้เมธอด setLockTaskPackages () เพื่อเปิดใช้งานแอปที่จะ pinnable โดยไม่ต้องมีขั้นตอนการยืนยันผู้ใช้
หากคุณเปิดใช้งานการปักหน้าจอแบบเป็นโปรแกรม (ไม่ใช่เจ้าของอุปกรณ์แอป) หรือบนอุปกรณ์โดยใช้หมุดในเนื้อหาล่าสุดคุณจะได้รับพฤติกรรมดังต่อไปนี้:
กล่องโต้ตอบปรากฏขึ้นเพื่อถามผู้ใช้ว่าพวกเขาต้องการเปิดใช้งานการปักหน้าจอหรือไม่และพวกเขาต้องการรหัสผ่านเพื่อออก หากพวกเขากดใช่แถบสถานะและการแจ้งเตือนหายไปปุ่มย้อนกลับบ้านและปุ่มล่าสุดจะไม่หายไป แตะที่บ้านหรือล่าสุดทำให้ขนมปังปรากฏแจ้งผู้ใช้วิธีการออกจากการตรึงหน้าจอ
จากนั้นผู้ใช้สามารถกดค้างไว้และกลับไปซ้ำเพื่อออกจากการตรึงหน้าจอ หากผู้ใช้เลือกใช้รหัสผ่านผู้ใช้จะถูกเตะเข้าสู่หน้าจอล็อคโดยตรง พฤติกรรมนี้หมายความว่าไม่เหมาะสำหรับ imo kiosk มันง่ายเกินไปที่ผู้ใช้คีออสก์จะดูหน้าจอล็อค
ในการรับโหมดคีออสก์ที่เหมาะสมเราจำเป็นต้องตั้งเจ้าของอุปกรณ์ เอกสารของ Google บอกว่าคุณต้องทำสิ่งนี้กับ NFC:
ในการปรับใช้และเปิดใช้งานเจ้าของอุปกรณ์คุณต้องทำการถ่ายโอนข้อมูล NFC จากแอพโปรแกรมไปยังอุปกรณ์ในขณะที่อุปกรณ์อยู่ในสถานะที่ไม่ได้รับการอนุมัติ
การใช้ NFC เพื่อทำสิ่งนี้ดูเหมือนว่าจะซับซ้อนเล็กน้อย (จะเกิดอะไรขึ้นถ้าอุปกรณ์ไม่มี NFC) ฉันยังไม่ได้ตรวจสอบเรื่องนี้ดังนั้นหากใครสามารถให้ข้อมูลว่าคุณจะตั้งค่าอุปกรณ์ NFC ได้อย่างไร ซึ่งตอนนี้กลายเป็นประเด็นหลักของคำถามของคุณ (เช่นการตั้งค่าเจ้าของอุปกรณ์บนอุปกรณ์ที่ไม่ได้รูท)
แต่เพื่อยืนยันการทำงานตามที่คาดไว้ถ้าคุณรูทอุปกรณ์คุณสามารถตั้งค่าเจ้าของอุปกรณ์ตามคำแนะนำก่อนหน้าของ Google (เพิ่ม device_owner.xml) ตามที่ฉันพูดถึงที่นี่
ตอนนี้คุณสามารถล็อคแอพได้อย่างถูกต้องไม่มีกล่องโต้ตอบปรากฏขึ้นเพื่อให้ผู้ใช้ยอมรับเมื่อเปิดใช้งานปุ่มสำนึกผิดและปุ่มโฮมหายไปและผู้ใช้ไม่สามารถออกจากแอพได้เว้นแต่ว่าแอพของคุณปลดล็อคตัวเอง โหมดคีออสก์ที่เหมาะสม ฉันได้ทดสอบสิ่งนี้ใน Nexus 7 2013 ด้วย Lollipop build ล่าสุด
ตัวอย่างต่อไปนี้เปิดล็อค:
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);
if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
Log.d(TAG, "isDeviceOwnerApp: YES");
String[] packages = {this.getPackageName()};
mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
Log.d(TAG, "isDeviceOwnerApp: NO");
}
if (mDPM.isLockTaskPermitted(this.getPackageName())) {
Log.d(TAG, "isLockTaskPermitted: ALLOWED");
startLockTask();
} else {
Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}