как сохранить растровое изображение в папке моей галереи в android?
Это мой код для сохранения изображения. Я уже упоминал имя папки, в которой я хочу сохранить изображение, чтобы оно было в галерее, но оно не работает. мое изображение сохраняется в папке "картинки" по умолчанию. Когда я отлаживаю, он показывает
Ява.Ио.Исключение filenotfoundexception: /хранение/подражания/0/MyFolderName/ААА-13:15:44/1-4-2016.jpg: открыть не удалось: ENOENT (нет такого файла или каталога)
Исключение. Он отправляется в папку catch сразу после выполнения первой строки try блок.
Помогите пожалуйста, чего мне не хватает????Заранее благодарю вас...
public void saveImage(Bitmap bitmap){
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/MyFolderName"); //my folder name where I want to save.
String receiverN = receiverName.getText().toString();
myDir.mkdirs();
Calendar c = Calendar.getInstance();
String month, day, year, hour, minute, second;
month = ""+ (c.get(Calendar.MONTH)+1);
day = "" + c.get(Calendar.DAY_OF_MONTH);
year = "" + c.get(Calendar.YEAR);
hour = ""+c.get(Calendar.HOUR_OF_DAY);
minute = "" + c.get(Calendar.MINUTE);
int seconds = c.get(Calendar.SECOND);
if (seconds<10) second = "0"+ seconds;
else second = ""+seconds;
String fname = receiverN + "-" + hour + ":" + minute + ":" + second + "/" + month + "-" + day + "-" + year +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file); //from here it goes to catch block
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
String[] paths = {file.toString()};
String[] mimeTypes = {"/image/jpeg"};
MediaScannerConnection.scanFile(this, paths, mimeTypes, null);
} catch (Exception e) {
e.printStackTrace();
}
}
1 ответ:
Несколько вещей, чтобы попробовать.
Используйте
File.separator
для вашего/
персонажа.Вместо преобразования внешнего каталога хранения в строку используйте его в конструкторе
File
.File myDir = new File( Environment.getExternalStorageDirectory(),File.separator+"MyFolderName");
В вашем настоящем файле есть имя
/
. Я бы удалил этот символ плюс любые другие символы, которые могут вызвать проблемы с именами файлов, используя что-то вроде следующего.public static String encodeString(String string) { if (string != null) { string = string.replace("/","-"); string = string.replace(" ","_"); string = string.replace(":", "-"); string = string.replace("&", "-"); } return string; }