我正在为客户审核应用程序做一些研究,想知道是否有办法在没有设备生根的情况下,在后台从服务中获取快照?
它应该能够拍摄前景中任何活动的快照。是否有任何编程方式可以做到这一点?
答案 0 :(得分:0)
下面的内容应该有效:
View rootView = MainActivity.this.getWindow().getDecorView().getRootView();
rootView.setDrawingCacheEnabled(true);
rootView.measure(MeasureSpec.makeMeasureSpec(this.screenWidth/*specify the width here*/, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(this.screenHeight/*specify the height here*/, MeasureSpec.EXACTLY));
rootView.layout(0, 0, rootView.getMeasuredWidth(), rootView.getMeasuredHeight());
rootView.buildDrawingCache(false);
Bitmap bmScreen = Bitmap.createBitmap(rootView.getDrawingCache());
此代码要求活动位于内存和前台。如果没有超级用户访问权限且无需修改Android的源代码,您就无法截取屏幕截图。我也研究了很多,这是我能想到的最好的。最后,我们最终拍摄了Activity的关卡截图。但是,如果您打开了root访问权限,here就是如何执行此操作的链接。