Android 在UncaughtExceptionHandler中拍摄屏幕截图
我正在尝试实现一个系统,如果发生未捕获的异常,我的异常处理程序将截取活动的屏幕,保存并作为错误报告的一部分发送。这在安卓系统中可能吗?我正在将活动传递给构造函数中的异常处理程序,但迄今为止,我用于获取屏幕截图的每次尝试都返回null 我尝试了以下方法: 尝试一: 尝试二: 在尝试1中,view.getDrawingCache返回null,在尝试2中,Bitmap.createBitmap返回null 任何Android开发者都知道如何在UncaughtExceptionHandler中截图吗?您不想:Android 在UncaughtExceptionHandler中拍摄屏幕截图,android,exception-handling,null,screenshot,drawingcache,Android,Exception Handling,Null,Screenshot,Drawingcache,我正在尝试实现一个系统,如果发生未捕获的异常,我的异常处理程序将截取活动的屏幕,保存并作为错误报告的一部分发送。这在安卓系统中可能吗?我正在将活动传递给构造函数中的异常处理程序,但迄今为止,我用于获取屏幕截图的每次尝试都返回null 我尝试了以下方法: 尝试一: 尝试二: 在尝试1中,view.getDrawingCache返回null,在尝试2中,Bitmap.createBitmap返回null 任何Android开发者都知道如何在UncaughtExceptionHandler中截图吗?您
Bitmap viewBmp = Bitmap.createBitmap(view.getLayoutParams().width, view.getLayoutParams().height,
Bitmap.Config.ARGB_8888);
LayoutParams通常没有实际的宽度和高度。它通常具有负值,表示换行内容或匹配父项
相反,请尝试:
Bitmap viewBmp = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);
或者类似的东西。您需要的是容器的实际宽度和高度,而不是其布局参数所要求的宽度和高度。第二个返回null,因为您正在尝试创建大小为-1或-2view的位图。getLayoutParams.width从fill_parent和wrap_Contents返回一个。感谢您的解释,现在已经修改。感谢您的回答。我已将其更改为view.getWidth和getHeight,这两个函数都返回0?是否有可能在调用异常处理程序时布局不再存在?@user2459186:要么如此,要么在测量布局之前(例如,在活动的onCreate中)发生异常。感谢您的输入,我实际上故意在OnResume方法中造成空指针异常,以便测试此代码,看起来你是对的,布局在这个时间点上没有被测量。@user2459186:因为异常是,嗯,异常,你需要在你的未捕获异常处理程序中使用智能来查看你的宽度/高度是否为非零,并且只有当这是真的时才尝试截图。你是对的,我现在已经加强了训练。再次感谢!
Bitmap viewBmp = Bitmap.createBitmap(view.getLayoutParams().width, view.getLayoutParams().height,
Bitmap.Config.ARGB_8888);
Bitmap viewBmp = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);