ファイルプロバイダを使用してカムイメージをキャプチャする作業を開始しました。私の断片は、take image simplyに関連するアンドロイドのドキュメントによると、カムキャプチャインテントを呼び出します。フラグメントのonActivityResultメソッドにおけるインテント値null
問題はonActivityResult
にあります。メソッドインテントはnullを返します。ここで私はすべてを設定する方法です。私は何が間違っているのか理解できません。
のAndroidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
file_path.xml
<paths>
<external-files-path name="my_images" />
</paths>
camcaptureの意図に実装でFragment.class
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photoFile = null;
try {
photoFile = Utils.createImageFile(getContext());
String authorities = context.getPackageName()+".fileprovider";
uriForFile = FileProvider.getUriForFile(context, authorities, photoFile);
} catch (IOException e) {
e.printStackTrace();
}
Log.d(TAG, "handleCaptureImage: "+uriForFile); // shows this result in logs content://appid.fileprovider/my_images/Pictures/JPEG_20170918_181145_719404055.jpg
intent.putExtra(MediaStore.EXTRA_OUTPUT, uriForFile);
startActivityForResult(intent, OPEN_CAMERA);
フラグメントでonActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == PICK_IMAGE) {
try {
//works fine bitmap generated correctly.
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData());
} catch (IOException e) {
e.printStackTrace();
}
} else if (requestCode == OPEN_CAMERA) {
Log.d(TAG, "onActivityResult: "+data); //data always null
}
}
}
私は同じ結果としての活動をホストにonActivityResult()を呼び出してみました。正しい方向にポインタが必要です。事前にありがとうございます。
はあなたが結果を設定しました同じ活動か断片か? ** setResult(RESULT_OK、intent)**そしてアクティビティを終了します。 –
はい..それは助けません。プラス私は断片的ですし、私はちょうどその間に捕獲された画像結果を望んでいます。私は活動を終了する必要はありません –