2010-06-01 3 views
0

Я пытаюсь обрезать фотографию для использования в Live Wallpaper, но я получаю исключение FileNotFoundException, когда активность посева пытается сохранить мое новое обрезанное изображение. Это код, я использую:FileNotFoundException при обрезке фотографии

File file = new File(getFilesDir(), "wallpaper.jpg"); 

Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setData(uri); 

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

intent.putExtra("outputX", metrics.widthPixels * 2); 
intent.putExtra("outputY", metrics.heightPixels); 
intent.putExtra("aspectX", metrics.widthPixels * 2); 
intent.putExtra("aspectY", metrics.heightPixels); 
intent.putExtra("scale", true); 
intent.putExtra("noFaceDetection", true); 
intent.putExtra("output", Uri.parse("file:/" + file.getAbsolutePath())); 

startActivityForResult(intent, REQUEST_CROP_IMAGE); 

wallpaper.jpg файл, кажется, существует на DDMS проводнике файлов, так что я не уверен, что я делаю неправильно. Любые советы высоко ценится.

ответ

0

getFilesDir() возвращает приватную директорию приложения. Камера не может получить доступ к вашей частной директории. Чтобы сделать wallpaper.jpg доступным для камеры, поместите его в какую-то папку publix. Например, Алекс сказал, что это может быть sd card root. Фиксированный код будет:

File file = new File(Environment.getExternalStorageDirectory(), "wallpaper.jpg"); 
0

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Если вы используете уровень API 7 или ниже, использование getExternalStorageDirectory(), чтобы открыть файл, представляющий корень внешнего хранения. то Вы должны записать данные в следующем каталоге:

/Android/данные // файлы/ Ваш Java-стиль имя пакета, такие как «com.example.android.app». Если на устройстве пользователя запущен API-уровень 8 или выше, и они удаляют ваше приложение , этот каталог и все его содержимое будет удалено.