【问题标题】:How to open Context.MODE_PRIVATE files with external apps如何使用外部应用程序打开 Context.MODE_PRIVATE 文件
【发布时间】:2026-02-14 07:35:01
【问题描述】:

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

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(权限被拒绝)。”

请指教。谢谢。

【问题讨论】:

    标签: android outputstream


    【解决方案1】:

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

    正确。 Intent.FLAG_GRANT_READ_URI_PERMISSION 用于ContentProvider,而不是用于裸file:// Uri 值,例如您正在使用的值。 Use FileProvider 将这样的ContentProvider 添加到您的应用程序中。另见the "Sharing Files" training modulethis sample app

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

    【讨论】:

      最近更新 更多