как получить путь к файлу из пути URI в Android - PullRequest
0 голосов
/ 27 июня 2018

Учитывая URI:

Содержание: //com.app.exam.provider/files/image/a590d119-f234-482e-9218-1d89f9829a8b.jpg

Я загружаю через скольжение, работает. но мне также нужен доступ к файлу для загрузки изображения.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я использую этот код для получения имени файла из URI изображения.

/**
 *
 * @param image
 * @return
 */
private String getImageFilename(Uri image) {
    if (image != null) {
        String path = getRealPathFromURI(this.context(), image);
        if (path != null) {
            return path.substring(path.lastIndexOf("/") + 1);
        } else {
            return null;
        }
    } else {
        return null;
    }
}

/**
 * Gets the file path from a given URI.
 * @param context
 * @param contentUri
 * @return
 */
private String getRealPathFromURI(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        if (contentUri != null) {
            String[] tempArray = {MediaStore.Images.Media.DATA};
            cursor = context.getContentResolver().query(contentUri, tempArray, null, null, null);
            if (cursor != null) {
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                return cursor.getString(column_index);
            } else {
                return null;
            }
        } else {
            return null;
        }
    } catch (Exception e) {
        printLogMessage(e);
        return null;
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

Пожалуйста, дайте мне знать, если это не сработает в вашем случае.

0 голосов
/ 27 июня 2018

Для получения пути к файлу из доступного URI; используйте это: -

String file_path = yourUri.uri.getpath();

Также для получения файлового объекта из этого URI: -

File file_obj = new File(new URI(file_path));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...