Большинство фрагментов кода, которые я видел здесь и там, чтобы побудить пользователя выбрать файл или изображение, имеют метод onActivityResult, используя функцию, подобную приведенной ниже выбранный путь к файлу.Лучший способ получить имя файла из выбранного файла/изображения
Мой вопрос, почему все это проходит, когда Uri имеет готовую к использованию функцию Uri.getPath()? Есть ли преимущества или недостатки в одном подходе или в другом?
код onActivityResult
Uri source = data.getData();
String fileName=getRealPathFromURI(this, source);
функция прибудете путь
public static String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
Я на самом деле было мое приложение врезаться с помощью getRealPathMethod, когда я выбрал файл/изображение из раздаточной ... при использовании Uri.getPath(), у меня не было никаких проблем. Итак ... Какая сделка здесь? Я что-то упускаю?
Вы не должны иметь имя файла, чтобы получить содержимое. И у вас не должно быть такого. http://developer.android.com/guide/topics/providers/document-provider.html#open см. пример openstreamstream/bitmap (эта часть не является исключительной для android 4.4) – zapl
ok ... но это не имеет ничего общего с вопросом. Возможно, то, что я пытаюсь сделать, требует получения имени файла, а не содержимого. – Anonymous
Возможно, нет даже файла. Или тот, к которому вы не можете получить доступ. Вы не можете использовать путь во всех случаях. (и это, по сути, ответ на вопрос: «В чем дело? Я что-то пропустил?») – zapl