私は自分のアプリで写真を撮って保存しようとしています。私がボタンを持っている断片ダイアログ(cameraOrChoosePhotoダイアログ)は、次の写真のためのファイルを作成するためのカメラや他のアクションを開くための意図を作る呼んで私の活動では写真はギャラリーに表示されません
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="mypacage.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/path" />
</provider>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="my_images" path="images"/>
</paths>
: 私はマニフェストに彼のためfileproviderとパスを書きました: :私の活動の
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.dialog_camera:
Uri uri = generateUriPhoto();
if(uri!=null) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
cameraIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getActivity().startActivityForResult(cameraIntent, SubItemDetail.CAMERA_RESULT);
} else dismiss();
break;
case R.id.dialog_choose_photo:
break;
}
}
private Uri generateUriPhoto() {
file = createNameFile();
uri = null;
if (file != null) {
String aut = getActivity().getPackageName()+".fileprovider";
uri = getUriForFile(getActivity(), aut, file);
getActivity().grantUriPermission(getActivity().getPackageName(), uri,
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
return uri;
}
public File getFile() {
return file;
}
public Uri getUri() { // onActivityResult
return uri;
}
private File createNameFile() {
directory = new File(getActivity().getFilesDir(), "images");
if (!directory.exists()) {
directory.mkdirs();
}
String name = "photo_" + System.currentTimeMillis();
File file = null;
try {
file = File.createTempFile(
name, /* prefix */
".jpg", /* suffix */
directory /* directory */
);
} catch (IOException e) {
e.printStackTrace();
dismiss();
}
return file;
}
次へ:
.........
private Uri uri
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
CameraOrChoosePhotoDialog cameraOrChoosePhotoDialog = (CameraOrChoosePhotoDialog) getFragmentManager().findFragmentByTag("camera");
uri = cameraOrChoosePhotoDialog.getUri();// get uri from dialogfargment
if (resultCode == RESULT_OK) {
if (requestCode == CAMERA_RESULT) {
image.setImageURI(uri);
addPicToGallery(); // try to put photo in gallery
cameraOrChoosePhotoDialog.dismiss(); // close dialog
}
}
}
private void addPicToGallery() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));
mediaScanIntent.setData(uri));
sendBroadcast(mediaScanIntent);
}
写真はギャラリーに表示されません
私は正常にキャプチャした後にイメージを保存する必要があると思う、あなたはシステムに存在するファイルをスキャンしているだけです。最初にfileOutputStreamを使用してビットマップを圧縮して保存してから、(sendBroadcast) –
@Demo Mailをスキャンします。 Android StudioのAMDでは、これらの作成されたファイルに拡張子.jpgが付いています。フォルダ内... /ファイル/ images/ –
あなたはそのイメージを開くことができますか?有効な画像を見ることができますか? –