Я использую следующие фрагменты кода для сохранения изображения, снятого пользователем на устройстве:
private void createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
image.mkdirs();
// Save a file: path for use with ACTION_VIEW intents
cameraFilePath = "file://" + image.getAbsolutePath();
}
private void saveImageToGallery(Context context) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
mediaScanIntent.setData(Uri.parse(cameraFilePath));
context.sendBroadcast(mediaScanIntent);
}
Это нормально работает для большинства устройств, хотя некоторые Samsung (Galaxy S5, S3) ведут себя странно; мой метод createImageFile создает следующий путь:
file:///storage/emulated/0/Pictures/JPEG_20150701_131442_-1853613631.jpg
но изображение сохраняется на устройстве по следующим путям:
/storage/emulated/legacy/Pictures/JPEG_20150701_131442_-1853613631.jpg
и
/storage/sdcard0/Pictures/JPEG_20150701_114009_-1853613631.jpg
Я делаю что-то принципиально неправильное здесь? Или это просто Samsung не следует стандарту?