我正在尝试将照片保存到外部存储空间并将其显示在ImageView中,但我不希望其他应用可以访问此照片。当我想创建该文件时,我尝试用方法File
创建一个新的getFilesDir()
作为目录参数,但如果我问我是否可以写入它(保存图像),它会返回我不能(详见代码)。
请注意,该应用具有android.permission.WRITE_EXTERNAL_STORAGE
权限。
public void takePhoto(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getFilesDir(), "my_image.jpg");
// Check if I can write in this path (I always get that I can't)
if (file.canWrite()) {
Toast.makeText(this, "I can write!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "I CAN'T WRITE!", Toast.LENGTH_LONG).show();
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, IMAGE_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMAGE_REQUEST_CODE) {
File file = new File(getFilesDir(), "my_image.jpg");
Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700);
imageView.setImageBitmap(bitmap);
}
}
但是,如果我使用Environment.getExternalStorageDirectory()
方法,我可以保存照片。
我想我可能会误解File
如何运作,但我不知道究竟是什么。我没有FC,图像只是没有在ImageView中显示。
答案 0 :(得分:0)
如果您保存到外部存储空间,每个人都会看到图像:
然后,当您收到onActivityResult上的回调时,您将收到图像中的URI
Uri mUriFile = data.getData()
然后,根据操作系统版本,您可以获取文件路径
这是一个很好的帖子来获取它Android Gallery on KitKat returns different Uri for Intent.ACTION_GET_CONTENT