В настоящее время я создаю приложение, которое работает с изображениями. Мне нужно реализовать функциональность, когда пользователь выбирает файл, хранящийся на SD-карте. Как только они выберут картинку (используя галерею Android), расположение файла изображения будет отправлено на другое мероприятие, где будет выполняться другая работа.Загрузить выбранный файл изображения в Android
Я видел похожие сообщения здесь, на SO, но никто не ответил на мой вопрос конкретно. В основном это код, который я делаю, когда пользователь нажимает на кнопку «загрузить рисунок»:
// Create a new Intent to open the picture selector:
Intent loadPicture = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// To start it, run the startActivityForResult() method:
startActivityForResult(loadPicture, SELECT_IMAGE);
Из этого кода, я тогда есть метод onActivityResult()
послушать автодозвона:
// If the user tried to select an image:
if(requestCode == SELECT_IMAGE)
{
// Check if the user actually selected an image:
if(resultCode == Activity.RESULT_OK)
{
// This gets the URI of the image the user selected:
Uri selectedImage = data.getData();
// Create a new Intent to send to the next Activity:
Intent i = new Intent(currentActivty.this, nextActivity.class);
// ----------------- Problem Area -----------------
// I would like to send the filename to the Intent object, and send it over.
// However, the selectedImage.toString() method will return a
// "content://" string instead of a file location. How do I get a file
// location from that URI object?
i.putExtra("PICTURE_LOCATION", selectedImage.toString());
// Start the activity outlined with the Intent above:
startActivity(i);
Как указано выше в коде, uri.toString()
вернет строку content://
вместо местоположения файла выбранного изображения. Как получить местоположение файла?
Примечание: Другое возможное решение - отправить по строке content://
и преобразовать ее в Bitmap
(что и происходит в следующем действии). Однако я не знаю, как это сделать.
Я не 100% на этом, но я думаю, что сделал что-то вроде selectedImage.getPath(); – stealthcopter