React Native + Expo - запуск Android-намерения открыть локально сохраненные файлы.(Android) - PullRequest
4 голосов
/ 15 мая 2019

У нас есть управляемое выставочное приложение, которое использует FileSystem.downloadAsync, и все в порядке.

У нас есть FlatList, который отображает список загруженных файлов.

Мы не хотим создавать вьюер файлов, для каждого приложения под солнцем это не цель.

Мы хотим иметь возможность выбирать файл из списка и, возможно, использовать систему Android Intent, чтобы предложить пользователю список уже установленных приложений, которые могут обрабатывать тип файла.

например. У нас есть что-то вроде


    class FileBrowser extends Component {
        state = {
            files: [
                {
                    key: '1'
                    name: 'file.jpg',
                    sys_path: 'file://blah.jpg'
                }
            ]
        }

        openFile(item) {
            IntentLauncherAndroid.startActivityAsync(
               'android.intent.action.OPEN_DOCUMENT', {
                data: item.sys_path
            })
        }

        render() {
            return (
                <FlatList data={ this.state.files } renderItem={ (item) => <Button title={ item.name } onPress={ this.openFile(item) } />} />
            )
        }
    }

Мы почти исчерпали список намерений из https://chromium.googlesource.com/android_tools/+/febed84a3a3cb7c2cb80d580d79c31e22e9643a5/sdk/platforms/android-23/data/activity_actions.txt

Единственное, что почти получает, это android.intent.action.VIEW, однако, он просто открывает случайный список приложений, ни одно из которых не может обрабатывать изображения - мы также передали тип mime, например. image/jpeg или image/* в надежде отфильтровать список.


Как правильно было бы на Android только предложить пользователю открыть файл в соответствующих приложениях?

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