Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在UncaughtExceptionHandler中拍摄屏幕截图_Android_Exception Handling_Null_Screenshot_Drawingcache - Fatal编程技术网

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中截图吗?您

我正在尝试实现一个系统,如果发生未捕获的异常,我的异常处理程序将截取活动的屏幕,保存并作为错误报告的一部分发送。这在安卓系统中可能吗?我正在将活动传递给构造函数中的异常处理程序,但迄今为止,我用于获取屏幕截图的每次尝试都返回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);