在后台(不是 root)截屏任何 activity

Take screen captures for any activity in the background (not root)

我正在为审核应用程序的客户做一些研究,想知道是否有一种方法可以在不对设备进行 root 的情况下从后台服务获取快照?

它应该能够对前景中的任何 activity 进行快照。有什么程序化的方法可以做到这一点吗?

像下面这样的东西应该可以工作:

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());

此代码要求 activity 位于内存和前台。如果没有 root 访问权限并且没有修改 Android 的源代码,您将无法截取屏幕截图。我也对此进行了很多研究,这是我能想到的最好的。最后我们以 Activity 的水平截取了屏幕截图。但是,以防万一您对 root 访问权限开放,here 是关于如何操作的 link。