Android 14 เปิดตัว API การตรวจหาภาพหน้าจอที่รักษาความเป็นส่วนตัว เพื่อสร้างประสบการณ์การใช้งานที่ได้มาตรฐานมากขึ้นสำหรับการตรวจหาภาพหน้าจอ API นี้ช่วยให้แอปสามารถลงทะเบียนการเรียกกลับตามกิจกรรม ระบบจะเรียกใช้ การเรียกกลับเหล่านี้และแจ้งเตือนผู้ใช้เมื่อผู้ใช้ จับภาพหน้าจอขณะที่กิจกรรมนั้นแสดงอยู่
กรณีการใช้งานที่รองรับ
ใน Android 14 ระบบ API จะตรวจจับภาพหน้าจอได้ก็ต่อเมื่อผู้ใช้กดปุ่มฮาร์ดแวร์ตาม ชุดค่าผสมที่เฉพาะเจาะจงเท่านั้น API จะไม่ตรวจจับ ภาพหน้าจอที่ถ่ายเมื่อเรียกใช้คำสั่งทดสอบที่เกี่ยวข้องกับภาพหน้าจอ รวมถึง ADB หรือภายในทดสอบเครื่องมือที่บันทึกเนื้อหาหน้าจอปัจจุบันของอุปกรณ์
ขั้นตอนในการเริ่มต้น
หากต้องการเพิ่มการตรวจจับภาพหน้าจอ ให้ประกาศDETECT_SCREEN_CAPTURE
สิทธิ์เวลาติดตั้งใหม่ ดังนี้
<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
จากนั้นทำตามขั้นตอนเหล่านี้สำหรับแต่ละกิจกรรมในแอปที่ผู้ใช้อาจ จับภาพหน้าจอ
ใช้ Callback โดยการลบล้างฟังก์ชัน
onScreenCapture()
ใน การเรียกกลับนี้ แอปของคุณสามารถดำเนินการต่างๆ ได้ เช่น เตือนผู้ใช้รายอื่นว่า มีคนถ่ายภาพหน้าจอของข้อความสนทนาKotlin
val screenCaptureCallback = Activity.ScreenCaptureCallback { // Add logic to take action in your app. }
Java
final Activity.ScreenCaptureCallback screenCaptureCallback = new Activity.ScreenCaptureCallback() { @Override public void onScreenCaptured() { // Add logic to take action in your app. } };
ใน
onStart()
เมธอดของกิจกรรม ให้ลงทะเบียนการเรียกกลับของภาพหน้าจอKotlin
override fun onStart() { super.onStart() // Pass in the callback created in the previous step // and the intended callback executor (e.g. Activity's mainExecutor). registerScreenCaptureCallback(mainExecutor, screenCaptureCallback) }
Java
@Override protected void onStart() { super.onStart(); // Pass in the callback created in the previous step // and the intended callback executor (e.g. Activity's mainExecutor). registerScreenCaptureCallback(executor, screenCaptureCallback); }
ใน
onStop()
เมธอดของกิจกรรม ให้ยกเลิกการลงทะเบียนการเรียกกลับของภาพหน้าจอKotlin
override fun onStop() { super.onStop() unregisterScreenCaptureCallback(screenCaptureCallback) }
Java
@Override protected void onStop() { super.onStop(); unregisterScreenCaptureCallback(screenCaptureCallback); }
ควบคุมความสามารถในการจับภาพหน้าจอ
หากไม่ต้องการให้เนื้อหากิจกรรมของแอปปรากฏในภาพหน้าจอหรือ
ในจอแสดงผลที่ไม่ปลอดภัย ให้ตั้งค่า Flag การแสดงผล FLAG_SECURE
Kotlin
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE)
Java
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);