โหมดการปกป้องขั้นสูงของ Android (AAPM) เป็นฟีเจอร์ใหม่ที่เปิดตัวใน Android 16 โดยมีเป้าหมายเพื่อเพิ่มความปลอดภัยของอุปกรณ์ Android สำหรับผู้ใช้ที่มีความเสี่ยง เช่น นักข่าวและนักเคลื่อนไหว โดยจะทำงานเป็นการตั้งค่าเดียวที่ใช้การกำหนดค่าที่กำหนดไว้ล่วงหน้าชุดหนึ่งซึ่งออกแบบมาเพื่อเสริมการปกป้องอุปกรณ์ AAPM ให้ความสำคัญกับความปลอดภัยมากกว่าฟังก์ชันการทำงานและความสามารถในการใช้งานที่อาจลดลง ซึ่งหมายความว่าฟีเจอร์บางอย่างอาจถูกจำกัดเพื่อลดพื้นผิวการโจมตี
ผลกระทบ
AAPM เปลี่ยนลักษณะการทำงานของบริการระบบบางอย่างเพื่อเพิ่มความปลอดภัย หากแอปของคุณให้บริการแก่ผู้ใช้ที่ให้ความสำคัญกับความปลอดภัย คุณต้องปรับให้เข้ากับข้อจำกัดเหล่านี้
- สัญญาณของระบบ: เมื่อผู้ใช้เปิดใช้ AAPM ระบบจะแจ้งให้แอปที่สมัครรับข้อมูลทราบเพื่อให้แอปปรับให้เข้ากับสภาพแวดล้อมที่ถูกจำกัดได้
- การแก้ไขแอปที่จำเป็น: คุณต้องอัปเดตแอปเพื่อจัดการการเปลี่ยนแปลงลักษณะการทำงานที่เกิดจาก AAPM เช่น แอปของคุณต้องคำนึงถึงสิ่งต่อไปนี้
- การเชื่อมต่อเครือข่าย 2G และ WEP ที่ปิดใช้
- การบล็อกการโหลดแอปจากแหล่งที่ไม่รู้จัก
- การบันทึกข้อมูลทางนิติวิทยาศาสตร์ที่ใช้งานอยู่
- การบล็อกสายจากหมายเลขที่ไม่รู้จัก
- กลไกการป้องกันสแปมที่เปิดใช้สำหรับลิงก์ในแอปรับส่งข้อความ
- การบรรเทาผลกระทบที่กำหนดเองเพิ่มเติมเพื่อปกป้องผู้ใช้ที่มีความเสี่ยง
ผสานรวมกับ AAPM
คุณต้องประกาศสิทธิ์ต่อไปนี้จึงจะใช้ API ที่เกี่ยวข้องได้
รับสิทธิ์
<uses-permission android:name="android.permission.QUERY_ADVANCED_PROTECTION_MODE" />
ตรวจสอบสถานะ
ตรวจสอบว่าผู้ใช้เปิด AAPM ในอุปกรณ์แล้ว โดยใช้บริการของระบบ AdvancedProtectionManager
import android.security.advancedprotection.AdvancedProtectionManager
// ... inside your Activity or Service
val aapmManager = getSystemService(AdvancedProtectionManager::class.java)
if (aapmManager?.isAdvancedProtectionEnabled) {
// 🛡️ User is in Advanced Protection Mode.
// Engage shields: Disable risky features, enforce stricter authentication.
// TODO: Add Method which implements extra protections
}
ฟังการเปลี่ยนแปลงรันไทม์
ผู้ใช้สามารถเปิดหรือปิด AAPM ขณะที่แอปของคุณทำงานอยู่ ลงทะเบียนการเรียกกลับ เพื่อรับข้อมูลอัปเดตแบบเรียลไทม์
import android.security.advancedprotection.AdvancedProtectionManager
import java.util.concurrent.Executor
// Define the callback
val aapmCallback = AdvancedProtectionManager.Callback { isEnabled ->
if (isEnabled) {
// TODO: User just engaged protections. Lock it down!
} else {
// TODO: User disabled protections. You may relax restrictions.
}
}
// Register the callback (for example, in onStart)
// Ensure you use the correct executor (for example, mainExecutor for UI updates)
aapmManager?.registerAdvancedProtectionCallback(mainExecutor, aapmCallback)