如何使用外部应用程序打开Context.MODE_PRIVATE文件

时间:2014-08-19 20:58:18

标签: android outputstream

我有一个字符串(称为注释),其中包含一些我想使用外部应用程序显示的文本。我最初创建文件如下:

String end = "rtf";
FileOutputStream outputStream;
try {
    outputStream = openFileOutput("document." + end, Context.MODE_PRIVATE);
    outputStream.write(comments.getBytes());
    outputStream.close();

} catch (Exception e) {
    e.printStackTrace();
}

但是,当我尝试以下操作时,无法使用外部应用程序打开该文件:

    String type = "text/rtf";
    Intent intent = new Intent (Intent.ACTION_VIEW);
    File file = new File(getFilesDir() + "/document." + end);
    Uri fileUri = Uri.fromFile(file);
    intent.setDataAndType(fileUri,type);
    startActivityForResult(intent, Intent.FLAG_GRANT_READ_URI_PERMISSION);

我打开时使用外部应用程序尝试访问文档时收到的消息是: "打开失败:EACCESS(权限被拒绝)。"

请指教。感谢。

1 个答案:

答案 0 :(得分:0)

  

但是,当我尝试以下操作时,无法使用外部应用程序打开该文件:

正确。 Intent.FLAG_GRANT_READ_URI_PERMISSION用于ContentProvider,而不是用于file:// Uri个值,例如您正在使用的值。 Use FileProviderContentProvider添加到您的应用中。另请参阅the "Sharing Files" training modulethis sample app

请记住,您的下一个问题很可能是ActivityNotFoundException,因为相对较少的Android设备会有一个支持text/rtf MIME类型的应用。