Android工具之實現截圖和禁止截圖
阿新 • • 發佈:2018-12-29
轉載地址:http://blog.csdn.net/xietansheng/article/details/52689384;
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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
擷取應用(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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
2. 應用內的禁止截圖
APP的某些介面如果不希望使用者能夠截圖,可以對當前當前的Activity設定一個安全標記,如下:
// 禁止截圖
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
- 1
- 2
設定該安全標記後,在該Activity介面,無論是系統截圖,還是adb命令獲取截圖,都將無法使用(有root許可權的不正常情況除外)。