代码:请注意,startActivityForResult()方法由一个条件保护,该条件调用resolveActivity()方法,该方法返回可以处理意图的第一个活动组件。 执行此检查非常重要,因为如果您使用没有应用程序可以处理的意图调用startActivityForResult(),则您的应用程序将崩溃。所以只要结果不为null,就可以安全地使用意图。
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
这个功能可以正常使用,但在运行4.2.2版本的Alcatel设备上不能正常工作。我得到了ELSE
的消息,并带有我的toast“无法使用相机...”
如果设备有相机,这种情况怎么可能发生?
现在该怎么办? 如何处理这种情况 - 显然我必须依赖一些具有相机的设备报告“无法使用相机”,检测到这些设备有相机,然后使用它?!
文档或SO问题没有提到ELSE情况。
ACTION_IMAGE_CAPTURE
不是兼容性测试套件的一部分。或者,也许它在发货时通过了测试套件,但后来Alcatel在固件升级中破坏了该应用程序(据我所知,这不会重新进行测试)。 - CommonsWare