打开App在内部存储中创建的文件

时间:2013-12-19 13:21:47

标签: android file-io

我正在编写一个应用程序,它接收所有类型的文件作为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

1 个答案:

答案 0 :(得分:1)

  • 将文件保存到外部存储空间,或

  • 使用FileProvider创建从内部存储提供文件的ContentProvider,或

  • 创建自己的ContentProvider,实现openFile()并提供来自其他来源的内容流