fileObserver를 사용하여 Android 앱에서 스크린 샷을 감지하려고하는데 예상대로 Android에서 fileObserver가 작동하지 않습니다.FileObserver가 Android 6에서 작동하지 않습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screenshot_detection);
observer = new FileObserver(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES
+ File.separator + "Screenshots" + File.separator, FileObserver.ALL_EVENTS) {
@Override
public void onEvent(int event, String path) {
if (event == FileObserver.CREATE) {
Log.i(TAG, "Screenshot detected @ " + path);
}
}
};
observer.startWatching();
}
내가 같은 코드로는 넥서스 5 실행에합니다 (의 onEvent가 트리거되지 않습니다) 작동하지 않는 경우 4.4.4을 실행하는 넥서스 5 작동하는지 관찰 : 여기
은 스크린 샷을 감지 조각입니다 API 23+에 대한 런타임 권한을 돌 보았지만 6.0.1.Android M 용 fileObserver와 함께 known issue이 표시됩니다. 스크린 샷을 감지하는 데 더 좋은 방법이 있습니까? contentObserver를 사용해 보았습니다. issues도 마찬가지입니다.
안드로이드 장치가 당신이 검사하고있는 디렉토리에 스크린 샷을 저장할 필요가 없으며 스크린 샷 찍을 때 안드로이드 장치가'FileObserver'를 트리거 할 필요가 없습니다. Android 5.0 이상에서는 미디어 프로젝션 API를 사용하여 직접 스크린 샷을 찍으십시오. – CommonsWare
사람이 내 앱에있는 동안 찍은 스크린 샷이 있는지 확인한 다음 앱에서 물건을 공유하도록 요청합니다. 미디어 보호 API가이를 감지하는 방법을 제공합니까? 스크린 샷을 만들 수는 있지만 미디어 보호 API를 사용하여 스크린 샷 트리거를 감지 할 수는 없을 것입니다. – Rishi
"스크린 샷을 만들 수는 있지만 미디어 보호 API를 사용하여 스크린 샷 트리거를 감지 할 수는 없을 것"이라고 정확합니다. 아마도'FileObserver'는 개인 정보 보호를 이유로 스크린 샷을 무시하도록 수정되었습니다. – CommonsWare