React Native - получить имя файла из android содержимого URI - PullRequest
2 голосов
/ 11 февраля 2020


Мне нужно получить имя файла из android содержимого URI, например:
content: //com.android.providers.downloads.documents/document/15

Я пытаюсь использовать stat-native-fs stat, но он возвращает ошибку «Файл не существует».

Как я могу это сделать?

1 Ответ

1 голос
/ 16 февраля 2020

Я не нашел чистого решения в реагировать нативно, поэтому я создал собственный пакет в android и создал модуль в реагировать нативно, чтобы я мог использовать его.
Это код android:

@ReactMethod
    public void getFileNameFromUri(String filepath, Promise promise) {
        Uri uri = Uri.parse(filepath);
        String fileName = "";

        if (uri.getScheme().equals("content")) {
            try {
                Cursor cursor = reactContext.getContentResolver().query(uri, null, null, null, null);

                if (cursor.moveToFirst()) {
                    fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                    Log.d("FS", "Real File name: " + fileName);
                }
                cursor.close();
                promise.resolve(fileName);
            } catch (IllegalArgumentException ignored) {
                promise.reject("1", "Can not get cursor");
            }
        } else {
            promise.resolve(fileName);
        }
    }

Это модуль для реагирования на нативный код из android нативный код: response-native-modules- android

...