Aplikasi yang saya bangun saat ini memiliki persyaratan bahwa aplikasi harus mencegah OS untuk mengambil tangkapan layar aplikasi ketika sedang didorong ke latar belakang untuk alasan keamanan. Dengan cara ini, ia tidak akan dapat melihat layar aktif terakhir saat beralih antar aplikasi.
Saya berencana untuk menempatkan fungsi ini dalam metode onPause kelas aplikasi, tetapi pertama-tama saya perlu mencari tahu bagaimana saya dapat mencapai fungsi ini.
Jadi apakah ada orang di luar sana, yang memiliki petunjuk bagaimana cara memperbaikinya?
sumber
FLAG_SECURE
telah ada sejak awal - hanya memiliki arti terbatas hingga saat ini.FLAG_SECURE
tidak akan bertahan melawan itu, karena itu level terlalu rendah. Demikian pula, jika Anda mengambil hierarki widget Anda sendiri dan mengubahnya menjadiBitmap
-backedCanvas
,FLAG_SECURE
mungkin tidak akan menentang hal itu, karena Anda mengambil tangkapan layar sendiri dari widget Anda sendiri dan karena itu mungkin menginginkan yang "aman" di sana.FLAG_SECURE
untuk screenshot sistem , seperti thumbnail tugas terbaru.Hati-hati menggunakan WindowManager.LayoutParams.FLAG_SECURE, pada beberapa perangkat (diverifikasi pada Samsung Galaxy ACE, misalnya GT-S5830) ini akan membuat tampilan menjadi acak. Sepertinya bug spesifik Samsung. Saya merekomendasikan yang berikut ini:
Seperti inilah tampilan layar acak:
Ini bekerja dengan baik pada ponsel ICS Samsung, jadi saya berasumsi bahwa masalahnya diisolasi untuk perangkat Gingerbread (atau lebih lama).
sumber
Solusi yang disediakan oleh CommonsWare terus berlaku juga di Lollipop.
Hanya sebuah catatan, jika Anda ingin terus tidak melihat foto dalam daftar terbaru untuk seluruh aplikasi, SEMUA kegiatan yang dilaksanakan harus menentukan dalam
onCreate()
metode benderagetWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
sebelumsetContentView();
Jika tidak, snapshot dalam daftar terbaru akan menunjukkan aktivitas pertama tanpa tanda jika pengguna menavigasi melalui itu.
sumber
Berikut ini adalah solusi untuk menyembunyikan konten suatu aplikasi dengan menutupinya dengan layar splash ketika aplikasi diletakkan di latar belakang. Ini tidak menggunakan teknik FLAG_SECURE, saya cukup mengesampingkan metode onPause dan onResume layar dan memodifikasi tampilan untuk menunjukkan yang mencakup semua yang ada di belakang.
https://stackoverflow.com/a/52976001/6686912
sumber
ini bekerja untuk saya, itu mencegah dari mengambil screenshot dan juga setiap aplikasi rekaman inbuilt atau pihak ketiga dari layar perekaman.
sumber
Ini berfungsi untuk saya setelah menambahkan baris ini ke dalam onCreate sebelum setContentView dari setiap aktivitas.
sumber