Android 화면 캡처 방지 설정 방법 (FLAG_SECURE 사용법)


✨ 개요

Android 앱에서 민감한 정보를 화면에 표시할 때,
사용자가 화면을 캡처하거나 녹화하지 못하도록 방지하는 보안 기능이 필요할 수 있습니다.

이를 위해 Android에서는 FLAG_SECURE 플래그를 제공합니다.


1. ✅ FLAG_SECURE란?

FLAG_SECURE은 Android의 보안 플래그로,
이 플래그가 설정된 화면은 다음 기능이 자동 차단됩니다.


2. ✅ 사용 방법

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // 화면 캡처 방지 설정
    window.setFlags(
        WindowManager.LayoutParams.FLAG_SECURE,
        WindowManager.LayoutParams.FLAG_SECURE
    )

    setContentView(R.layout.activity_main)
}

3. 🔥 특정 Fragment만 보안 적용하고 싶은 경우

3.1 Fragment 에서 직접 적용

class SecureFragment : Fragment() {

    override fun onResume() {
        super.onResume()

        // 해당 Fragment가 보일 때만 보안 적용
        requireActivity().window.setFlags(
            WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE
        )
    }

    override fun onPause() {
        super.onPause()

        // 이 Fragment가 사라질 때 보안 해제
        requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
    }
}

3.2 Fragment 전환 이벤트 감지 → FLAG_SECURE 관리

Fragment를 여러 개 사용하는 구조라면, Fragment 전환을 감지해서 FLAG_SECURE를 컨트롤하는 것도 추천됩니다

navController.addOnDestinationChangedListener { _, destination, _ ->
    if (destination.id == R.id.sensitiveFragment) {
        window.setFlags(
            WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE
        )
    } else {
        window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
    }
}

4. 🔥 설정 전/후 비교

항목 FLAG_SECURE 미적용 상태 FLAG_SECURE 적용 상태
스크린샷 캡처 가능 (캡처 이미지 저장됨) 불가능 (검은 화면 또는 무효 처리)
화면 녹화 가능 (전체 화면 녹화 가능) 대부분 실패 또는 블랙 화면 녹화
최근 앱 미리보기 화면 앱 화면이 그대로 미리보기로 노출 블랙 또는 앱 아이콘만 표시됨
민감 정보 유출 위험 높음 매우 낮음

5. 주의사항 및 결론



Related Posts