カメラ アプリケーションで写真を撮るために Camera Intent を起動しています。アプリのデフォルト バージョンで期待どおりに動作しています。
私のアプリケーションのバージョンに同じコードを実装しまし"Android for Work"
たが、奇妙な動作になりました。通常、"Android for Work"
動画によると、別のプロファイルにある場合、Intent を処理することはできません。たとえば、仕事用プロファイルにカメラ アプリケーションがインストールされていない場合、Camera Intent は解決後に null になる必要がありますが、これは想定どおりです。
しかし、私の場合、カメラの意図は、デフォルトのユーザー プロファイルにインストールされているカメラ アプリケーションによって処理されます (Work Profile
カメラ アプリケーションはありません)。onActivityResult
そして、写真を撮ると、に戻りresultCode
Activity.RESULT_CANCELED
ます。
Real Cancel Event
それで、私の質問は、ユーザーとこの状況をどのように区別できますか? どちらも同じ結果になり、Activity.RESULT_CANCELED
以下のコードは、Camera Intent を起動する方法を示しています。
/* 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);
}