Android應用內 代碼截屏(獲取View快照)和 禁止截屏


1. 應用內的代碼截屏(獲取View的快照)

Android的View類中提供了獲取控件繪制緩存的方法,這種截屏的方式僅限於應用內自己的Activity界面,不需要任何權限,嚴格來說該方法不屬於截屏,只是獲取某個View控件每次繪制后的快照,代碼如下:

截取某一個控件繪制后的快照:

// 獲取需要截取快照的控件 View view = findViewById(R.id.my_view); // 設置控件允許繪制緩存 view.setDrawingCacheEnabled(true); // 獲取控件的繪制緩存(快照) Bitmap bitmap = view.getDrawingCache(); // 保存截取的快照 bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);

截取應用(Activity)的整個屏幕:

/* * 每個Activity都有一個鋪滿全屏的頂層View,只需要獲取這個View的繪制快照, * 就相當於截取了整個Activity的屏幕,這種方式截取部分包括通知欄,但不包括 * 通知爛上的內容,因為其內容不屬於當前的Activity。 */ // 獲取Activity整個窗口最頂層的View View view = activity.getWindow().getDecorView(); // 設置控件允許繪制緩存 view.setDrawingCacheEnabled(true); // 獲取控件的繪制緩存(快照) Bitmap bitmap = view.getDrawingCache(); // 保存截取的快照 bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);

2. 應用內的禁止截屏

APP的某些界面如果不希望用戶能夠截屏,可以對當前當前的Activity設置一個安全標記,如下:

// 禁止截屏 activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

設置該安全標記后,在該Activity界面,無論是系統截屏,還是adb命令獲取截屏,都將無法使用(有root權限的不正常情況除外)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM