我想从相机或文件中选择图像并将其用于裁剪活动。所以我在外部存储中创建了一个文件并将其传递给相机活动它成功运行。但是当我尝试在内部存储中创建文件并传递它时,不工作。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Add Photo!");
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (options[item].equals("Take Photo")) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// File f = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
File f = new File(Environment.getDataDirectory(), "temp.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 1);
} else if (options[item].equals("Choose from Gallery")) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 2);
} else if (options[item].equals("Cancel")) {
dialog.dismiss();
}
}
});
答案 0 :(得分:0)
第三方相机应用无法写入您应用的internal storage中的位置(例如getFilesDir()
),因为他们无法访问该位置。
欢迎您尝试使用FileProvider
之类的内容通过content://
Uri
在内部存储上展示位置,然后试试,但我怀疑很多相机应用都不会发生这种情况这样的Uri
值。
我所知道的唯一方法就是让你拍照到内部存储器就是使用相机API并自己拍照,这并不容易。