【发布时间】:2019-05-15 10:53:11
【问题描述】:
我们有一个托管的 expo 应用程序,它使用 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) } />} />
)
}
}
几乎唯一能到达那里的是android.intent.action.VIEW,但是它只是打开一个随机的应用程序列表,没有一个可以处理图像 - 我们还传入了 mime 类型,例如image/jpeg 或 image/* 希望能过滤列表。
在 Android 上仅让用户在适当的应用程序中打开文件的正确方法是什么?
【问题讨论】:
标签: android react-native android-intent expo