我正在尝试实现一个系统,如果发生未捕获的异常,我的异常处理程序将截取活动的屏幕截图,保存并作为错误报告的一部分发送。这在Android中甚至可能吗?我将活动传递给构造函数中的异常处理程序,但到目前为止我用来获取屏幕截图的每一次尝试都返回了 null。
我尝试了以下方法:
尝试一:
private Bitmap screenshot() {
View view = activity.getWindow().getDecorView(); //also tried getDecorView().getRootView()
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap image = view.getDrawingCache();
Rect windowbounds = new Rect();
view.getWindowVisibleDisplayFrame(windowbounds);
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
Bitmap secondaryBitmap = Bitmap.createBitmap(image, 0, 0, width, height);
view.destroyDrawingCache();
return secondaryBitmap;
}
尝试二:
private Bitmap screenshot2()
{
View view = activity.getWindow().getDecorView(); //also tried getDecorView().getRootView()
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Bitmap viewBmp = Bitmap.createBitmap(view.getWidth(),view.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(viewBmp);
view.draw(canvas);
return viewBmp;
}
在尝试 #1 中 view.getDrawingCache() 返回 null,在尝试 #2 Bitmap.createBitmap 返回 null。
任何 Android 开发人员都知道如何在 UncaughtExceptionHandler 中截取屏幕截图?