드'm 에서 작업하여 몇 가지 중요한 정보를 해야 하는지에 표시되"최근 작업"화면을 멈추를 눌러 응용 프로그램습니다.
나는'd 같은 흐리게 중요 데이터에서 스크린 또는응용 프로그램을 표시하고 로고 대신.
나는 다음과 같은 사항에 주의해 주십시오 접근 하지만 그들은 don't 맞는 나의 요구 사항:
-설정 actvitie's<코드>:안드로이드 excludeFromRecents</드>을에서 진정한 manifiest 응용 프로그램을 방지하에 표시되는 모든 최근에는 작업입니다. 이 것을 방해 사용자 경험을 제공합니다. -사용하는<코드>FLAG_SECURE</드>결과에 빈 카드에서는 최근 작업 화면입니다. (https://stackoverflow.com/questions/9822076/how-do-i-prevent-android-taking-a-screenshot-when-my-app-goes-to-the-background)I don't 과 같은 빈 화면입니다. 그러나 나는'll 스틱을하는 이 솔루션을 경우 해결 방법이 없습니다. -재<코드>onCreateThumbnail</드>처럼 보인다는 이상적인 솔루션이지만,불행하게도,지 않't work as it's 현재하지 않으로 호출되는 OS:((https://code.google.com/p/android/issues/detail?id=29370)
다음 방법을 사용하여 해결할 수 있습니다 내가 시도는't 동으로 기대:
-새로운 활동을 시작해서 보여주는 앱에 로고<코드>onPause</드>는's 린은 다음과 같 대신 실제 활동's 니다. 하지만 새로운 활동을 너무 오래 걸립을 열고 그것을 방해하는 사용자 경험을 제공합니다. -설정한 활동's 콘텐츠를 보기 이미지의 앱에 로고<코드>onPause</드>. 는 듯한 훌륭한 솔루션이다. 불행하게도,스크린샷에 대한 최근의 작업에 촬영에 지정되지 않은 시간입니다. 테스트 기간 동안 이 응용 프로그램 로고 빨리 앞에 나타납니다 누를 때'가정'그러나 결과 스크린샷 활동은 짧은 시간 전에. -을 제거하는 중요한 데이터 위젯에서(예를 들어<코드>뷰.setText("")</드>)가 동일한 문제의 스크린 샷 타이밍 언급했다.
어떤 다른 아이디어나는 솔루션을 나열된 해결 방법?
동물이 어미가 총을 맞았기 때문에 왔 이 몇 개월 전에 같은 목적을 위해 당신 같습니다.
불행하게도,내가 결론 그것은 단순히 가능하지 않습니다. 나는 발굴을 통해 안드로이드 소스 코드고 그것을 확인했다.
-이 없 콜백 또는 방법 안드로이드에서는 사용자 정의할 수 있다(작동하는 어쨌든). 외FLAG_SECURE
,이 부분의 코드를 허용하지 않는 모든 입력 또는 변경합니다.
-OnPause 및 이와 유사한 수명 주기 방법이라고 너무 늦기(스크린샷 촬영미). 모든 수명 주기 방법는 힌트는'재해를 배경으로 갈 실행 속도가 너무 늦었습니다.
-이미지를 볼 최근에는 작업입니다 실제적인 스크린샷-고,따라서 아't 의 변경 내용에 의해 영향을 받는 당신이(너무 늦)을 확인할 수 있게 되었습니다. 는 의미할 수 있't 을 수정하기 just-in-time(만드는 그것은 눈에 보이지 않는,로 교체하는 다른 무언가를 추가,SECURE_FLAG
,또는 기타의 방해보기). 옆으로,이러한 이미지에서 찾을 수 있습니다 에뮬레이터에서/data/system_ce/0/recent_images
.
-유일한 예외가 사용하는FLAG_SECURE
하는 것을 방지한 스크린 샷에서의 응용 프로그램입니다. 나는 실험 설정에 이 플래그는onPause
고 제거에서onResume
,그러나 언급했듯이 이미 이러한 수명 주기 방법을 실행한 후에 스크린샷 촬영,이미 이 절대적으로 효과가 없습니다.
로에서 설명 https://stackoverflow.com/questions/9130599/how-to-change-the-snapshot-shown-by-recent-apps-list 가 될하는 데 사용되는 콜백을 사용할 수 있는 사용자 정의 썸네일:onCreateThumbnail. 그러나,이것은 작동하지 않으며 그것은 결코 호출됩니다. 을 명확한 콜백은 여전히,그것은 단순히지 않에 의해 호출 OS. 는 사실 그것은 작은 가난하게 문서화되고,하지만 분명히 있었으로 사용되지 않/제거에서 4.0.3
으로 썸네일에 대한 자체,그것은 스크린샷을 찍은 서버. 그것은 촬영 전에onPause
이라고(혹은 사실이기 전에는 모든 콜백을 나타내는 당신의 활동에 대해를 배경으로 갈라고).
을 때는 갈 배경으로,실제 보기 애니메이션(을 줌으로의 전환). 는 애니메이션*할 수 있습니다***영향을 받을 수의 변화를 통해 당신에onPause
(있을 경우 당'다시 충분히 빠르다는 것)(내가 실험과 함께 불투명도를 설정하 0 창문에 다른 것들 중에서). 이 것이 그러나만에 영향을 줄 애니메이션이다. 애니메이션이 완료되면 보기를 대체에 의해 스크린샷 촬영 한다.
또한 이러한 질문에는 이에 대해:
-https://stackoverflow.com/questions/31011593/when-does-android-take-its-recent-apps-switcher-screenshot -https://stackoverflow.com/questions/12639335/show-custom-application-image-in-task-manager-on-ics-or-jb -https://stackoverflow.com/questions/48853975/android-never-call-method-oncreatethumbnail
는 방법을 구현하는 방법에 대한 오버레이 레이아웃에서 최고의 전체 활동인가?
투명,it's 클릭을 통해 기본적으로,그래서 부정적인 영향을 미치지 않는다에 UX 를 사용하는 동안.
에서onPause()
설정 반투명,이미지를 흐리게의 배경으로는 레이아웃,데이터가 뒤섞여 있을 것입니다. 에서onResume()변경
완전히 투명 배경을 다시합니다. Voila.
그것보다 빠를 수 있습 다른 형태의 오버레이입니다. 긍정적인 효과는 경우에,당신은 unblurring 으로 짧은 애니메이션 효과할 때 사용자가 뒤로(적절한 라이브러리를 사용하는 C++대신 Java)도 시원하고 사용자차는 마음을 볼 수 없도록 할 수 있습니다.
I haven't 이 자신이지만,그's 지 않은 뭔가't 도 아직입니다.
있는 방법이 사용자 지정합니다. 필요하신의 활동과 함께 중요한 데이터를FLAG_SECURE
에서onCreate
기 전에 당신은setContentView
. 그런 다음 필요하신 빈 활동 렌더링해서 당신이 원하는대로의 정의합니다. 이것은 일반적으로 몇 가지 종류의 화면을 시작합니다. 이 새로운 활동을 할 필요가 런처 및 활동하지 않FLAG_SECURE
. 이 활동을 시작했고 onResume 시작 당신의 실제 활동으로 민감한 데이터이다.
안드로이드 OS 의 스크린샷을 찍는 새로운에서 활동 시작합니다. 불행하게도 또한 사용자는 이 활동을 위한 짧은 순간입니다. 이후 모든 다른 활동은FLAG_SECURE
,안드로이드 OS 사용하는 것에만 사용할 수 있는 스크린 샷은 그 시작에 불과합니다.