У нас есть управляемое выставочное приложение, которое использует 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 только предложить пользователю открыть файл в соответствующих приложениях?