2013-06-27 2 views
0

Я довольно новичок в Java (в частности, Android). Я пытаюсь заставить пользователя выбрать изображение из галереи, а затем приложение скопирует изображение из галереи в папку в каталоге приложения (а также отобразит изображение, которое они выбрали в кнопке с изображением). Однако я получаю ошибку компилятора «Необработанный тип исключения IOException».Java - «Необработанный тип исключения IOException»

Это мой код: (Где раньше)

Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(i, 2); 

(функция onActivityResult)

Uri selectedImage = data.getData(); //data from onActivityResult 
String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
cursor.moveToFirst(); 
int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
String picturePath = cursor.getString(columnIndex); 
cursor.close(); 
ImageButton abcd = (ImageButton) findViewById(R.id.btn_addpicture); 
abcd.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
String command = "cp " + "'" + selectedImage.getPath().toString() + "' '" + getFilesDir().getPath() + "/Images/" + VALUE_NAME + ".jpg"; 
Runtime.getRuntime().exec(command); 

ошибка происходит от последней строки. Может ли кто-нибудь объяснить, где я ошибся? Я понятия не имею, что значит ошибка

+0

http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation –

+0

Есть ли причина, по которой вы используете этот метод для копирования файла вместо обычных методов File? Я не думаю, что это очень хорошая практика. – SimonSays

+0

Не совсем, потому что это единственный метод, который я знаю о XD – chesnutcase

ответ

1

Вы можете использовать

try{ 
    //your code 
} catch(IOException ioEx) { 
    ioEx.printStackTrace() // or what ever you want to do with it 
} 

Кроме того, как упоминалось вы можете захотеть взглянуть на Files

0

Погрешность означает, что вы делаете операцию ввода-выход и он бросает исключение, которое не обрабатывается вами.

Используйте блоки try-catch везде, где есть операции ввода-вывода.

Также вместо использования этого метода используйте методы «Файлы» для копирования или перемещения файлов, что будет проще.

Вы можете обратиться к ссылке this для получения сведений о передаче файлов.