728x90
안녕하세요,
오늘은 FLAG_SECURE 플래그를 사용해서 간단하게 스크린샷/화면 녹화 방지를 해보도록 하겠습니다.
WindowManager.LayoutParams.FLAG_SECURE 플래그는 앱 화면이 스크린샷, 화면 녹화, 미러링 등에 노출되지 않도록 막아줍니다.
아래 예제는 안드로이드 스튜디오 에뮬레이터에서 적용되지 않으며,
기기에서 테스트해야 확인할 수 있습니다.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private boolean isSecureEnabled = false;
private Button toggleSecureButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleSecureButton = findViewById(R.id.toggleSecureButton);
toggleSecureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleSecureMode();
}
});
}
private void toggleSecureMode() {
if (isSecureEnabled) {
// 캡처 방지 해제
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
isSecureEnabled = false;
Toast.makeText(this, "캡처 방지 해제됨", Toast.LENGTH_SHORT).show();
toggleSecureButton.setText("캡처 방지 켜기");
} else {
// 캡처 방지 활성화
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
isSecureEnabled = true;
Toast.makeText(this, "캡처 방지 활성화됨", Toast.LENGTH_SHORT).show();
toggleSecureButton.setText("캡처 방지 끄기");
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="캡처 방지 테스트 화면"
android:textSize="18sp"
android:layout_marginBottom="24dp" />
<Button
android:id="@+id/toggleSecureButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="캡처 방지 켜기" />
</LinearLayout>
아래 영상에서 볼 수 있듯이, 캡쳐 방지를 활성화 시키면 화면녹화가 방지되어 검은 화면으로 출력됩니다.
시연 영상 입니다.
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] 데이터바인딩 활용 예시 만들기 (2) | 2025.05.02 |
---|---|
[Java][Android] Dialog 외부 터치 시 닫히지 않게 하기 (0) | 2025.04.29 |
[Java][Android] livedata 활용 예시 만들기 (0) | 2025.04.25 |
[Java][Android] Lottie 라이브러리 활용해 애니메이션 기능 구현하기 (2) | 2025.04.22 |
[Java][Android] 안드로이드 Java로 유튜브 검색 구현하기 (0) | 2025.04.21 |