我正在编写一个应用程序,它接收所有类型的文件作为base64字符串。我整个上午一直在搜索,我没有找到一种方法来正确显示文件而不存储它们。作为替代方案,我写了这个:
private void createReadableFile(DocumentBinary document) {
try {
byte[] bytes = Base64.decode(document.getDocument(), 0);
FileOutputStream os = openFileOutput(document.getSuggestedFileName(), MODE_PRIVATE);
os.write(bytes);
os.flush();
os.close();
openFile(document);
} catch (Exception e) {
Ln.e(e, "Error while parsing document");
}
}
我用创建的文件执行此操作:
private void openFile(File file, String mimeType) {
Intent viewIntent = new Intent();
viewIntent.setAction(Intent.ACTION_VIEW);
viewIntent.setDataAndType(Uri.fromFile(file), mimeType);
viewIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(viewIntent);
}
但它没有任何启动。它调用onPause和onResume但没有任何反应。我知道如果我将MODE_PRIVATE
更改为MODE_WORLD_READABLE
它会起作用,但MODE_WORLD_READABLE
已被弃用。您是否知道更好的方法来做或使用什么而不是MODE_PRIVATE
?
答案 0 :(得分:1)
将文件保存到外部存储空间,或
使用FileProvider
创建从内部存储提供文件的ContentProvider
,或
创建自己的ContentProvider
,实现openFile()
并提供来自其他来源的内容流