Android/Developers 공부하기

'화면 캡처 막기'와 getWindow().addFlagssetFlags(int flags, int mask)

네모메모 2022. 8. 8. 10:27
반응형

 

 

'화면 캡처 막기' 설정

// (나같은 경우)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

반응형