在后台(不是 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。
我正在为审核应用程序的客户做一些研究,想知道是否有一种方法可以在不对设备进行 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。