반응형
'화면 캡처 막기' 설정
// (나같은 경우)acitivity onCreate()에서
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
// 또는
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
위에서 사용하는
'getWindow().addFlagssetFlags(int flags, int mask)'
- @param flags : 화면에 설정할 flag 값
- @param mask : (수정할 창 플래그 비트 라는데) 아래와 같은 역할을 하는듯 하다.
기본적으로 다른 값에 대한 비트 단위 필터입니다. 예를 들어 C 및 C++를 코딩할 때 매우 일반적입니다. 예를 들어 Java에서는 덜 사용하고 Android를 코딩할 때는 더 이상 거의 사용되지 않지만 물론 매우 빠른 작업(비트 수준에서) 때문에 시스템에서 여전히 사용됩니다. 값과 동일한 마스크를 사용한다는 것은 필터링이 없음을 의미합니다. 물론 다른 마스크로도 동일한 작업을 수행할 수 있습니다.
mask란?
/**
* Set the flags of the window, as per the
* {@link WindowManager.LayoutParams WindowManager.LayoutParams}
* flags.
*
* <p>Note that some flags must be set before the window decoration is
* created (by the first call to
* {@link #setContentView(View, android.view.ViewGroup.LayoutParams)} or
* {@link #getDecorView()}:
* {@link WindowManager.LayoutParams#FLAG_LAYOUT_IN_SCREEN} and
* {@link WindowManager.LayoutParams#FLAG_LAYOUT_INSET_DECOR}. These
* will be set for you based on the {@link android.R.attr#windowIsFloating}
* attribute.
*
* @param flags The new window flags (see WindowManager.LayoutParams).
* @param mask Which of the window flag bits to modify.
* @see #addFlags
* @see #clearFlags
*/
public void setFlags(int flags, int mask) {
final WindowManager.LayoutParams attrs = getAttributes();
attrs.flags = (attrs.flags&~mask) | (flags&mask);
mForcedWindowFlags |= mask;
dispatchWindowAttributesChanged(attrs);
}
'화면 캡처 막기' 해제
- 화면마다 설정 or 해제라면 화면판별해서 clear필요!
window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
[출처]
https://developer.android.com/reference/android/view/Window#setFlags(int,%20int)
mask : https://stackoverflow.com/a/45072067
android bit flag : https://gist.github.com/ihoneymon/f52b54bf6c5cbef39bea7a3a20a492f5#file-bit_flag-asc
반응형