sendUserActionEvent() 函数在三星 Tab3 上 mView 为空。

5

我正在尝试在我的应用程序中使用相机拍摄图像后进行预览,我确信路径不为空,但我在这行代码中收到了错误:Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),options);并且没有图像视图。注:我在另一台设备上测试了该代码(不是三星)它可以正常工作。

4个回答

5
我找到了解决这个问题的方法。不幸的是,在一些三星设备上,内置相机应用程序存在问题,它会导致屏幕旋转,从而重新启动您的活动。因此,mView 变为 null。这也发生在三星的其他意图中,不仅仅是相机。要修复它,您必须在清单文件中添加以下行到您的活动下面:
android:configChanges="orientation|screenSize"

谷歌在文档中提到:

从Android 3.2(API level 13)开始,当设备在纵向和横向方向之间切换时,“屏幕大小”也会发生变化。因此,如果您想要在开发API级别为13或更高版本(由minSdkVersion和targetSdkVersion属性声明)的应用程序时防止由于方向更改而导致运行时重启,您必须除了包含“orientation”值外还要包含“screenSize”值。也就是说,您必须声明android:configChanges="orientation|screenSize"。然而,如果您的应用程序针对API级别12或更低版本,则您的活动始终自己处理此配置更改(即使在Android 3.2或更高版本设备上运行,此配置更改也不会重新启动您的活动)。


3

关于sendUserActionEvent() mView==null的问题,这是三星设备已知的bug(请参见这里这里)。

如果在非三星设备上可以正常运行,则不是你的问题,而是三星的问题。
然而,您应该尽可能地寻找解决方法。
再次强调,这不是你的问题,而是TouchWiz的一个bug。


3

我为这个错误苦苦挣扎了好几天,这是因为三星相机应用默认处于横屏模式。

如果你从竖屏模式的活动中启动相机应用,在它从横屏回来时会自动再次调用OnCreate,这就是为什么你的路径为空的原因。

我通过在活动中添加一个静态计数器来解决这个问题。如果计数器等于0,则调用oncreate并完成所有操作;如果大于0,则只加载布局。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接