#android
#Android
Вопрос:
Я работаю над проектом Android и хочу получить путь к загруженному изображению с камеры или галереи. Все разрешения установлены, и я использую эту функцию, чтобы получить путь, но, похоже, он createNewFile()
всегда игнорируется, и я получаю path=""
все время.
public String saveImage(Bitmap myBitmap) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
File wallpaperDirectory = new File(
Environment.getExternalStorageDirectory() IMAGE_DIRECTORY);
// have the object build the directory structure, if needed.
if (!wallpaperDirectory.exists()) {
wallpaperDirectory.mkdirs();
}
try {
File f = new File(wallpaperDirectory, Calendar.getInstance()
.getTimeInMillis() ".jpg");
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
MediaScannerConnection.scanFile(this,
new String[]{f.getPath()},
new String[]{"image/jpeg"}, null);
fo.close();
Log.d("TAG", "File Saved::--->" f.getAbsolutePath());
return f.getAbsolutePath();
} catch (IOException e1) {
e1.printStackTrace();
}
return "";
}
Комментарии:
1. Не уверен, знаете ли вы об этом, но у вас может возникнуть проблема с разрешением A). Б) попробуйте распечатать каталог, в котором вы храните файл, он не жестко запрограммирован, поэтому вам нечего терять. Станьте более уверенным в своем коде, отлаживая, 4 часа отладки каждые 2-3 дня достаточно для каждого проекта.
2. вы нашли решение?
Ответ №1:
Может быть что-то в том, как вы собрали свой путь к файлу, но это недоступно для просмотра в вашем post. Возможно, вы пропустили предоставление разрешений в манифесте, поэтому файл не создан. Попробуйте это:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
Ответ №2:
Убедитесь, что у вас есть внешняя SD-карта в вашем телефоне, когда вы пытаетесь получить доступ
Environment.getExternalStorageDirectory()