我正在触发相机意图以使用相机应用程序拍照。它在我的默认应用程序版本中按预期工作。
我已经为"Android for Work"
我的应用程序版本实现了相同的代码,但最终出现了奇怪的行为。通常,根据"Android for Work"
视频,如果 Intent 位于不同的配置文件中,则无法处理它。例如,如果我的工作配置文件中没有安装相机应用程序,则相机意图在解决后应该为空,这是预期的。
但在我的情况下,相机意图由安装在我的默认用户配置文件中的相机应用程序处理(Work Profile
没有相机应用程序)。拍摄照片时,它会返回onActivityResult
一个resultCode
Activity.RESULT_CANCELED
.
所以,我的问题是,我怎样才能区分用户Real Cancel Event
和这种情况?两者的结果是一样的,Activity.RESULT_CANCELED
这是下面的代码,显示了我如何触发相机意图。
/* Create Camera Intent */
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
/* Check if the Camera Intent is Available */
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) == null) {
/* Notify User in Error Case */
UIUtils.notifyUser(getActivity(), getString(R.string.error), getString(R.string.no_camera_application_found));
} else {
/* Create a new File with Random Photo Name */
takenPhoto = new File(FileUtils.getExternalPhotoCacheDirectory(), generatePhotoName());
takenPhoto.createNewFile();
/* Create Uri to send to within the Intent */
Uri outputFileUri = Uri.fromFile(takenPhoto);
/* Set Photo destination File Uri */
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
/* Start Activity for Result */
startActivityForResult(cameraIntent, ACTION_TAKE_PHOTO);
}