我有一个字符串(称为注释),其中包含一些我想使用外部应用程序显示的文本。我最初创建文件如下:
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(权限被拒绝)。"
请指教。感谢。
答案 0 :(得分:0)
但是,当我尝试以下操作时,无法使用外部应用程序打开该文件:
正确。 Intent.FLAG_GRANT_READ_URI_PERMISSION
用于ContentProvider
,而不是用于file://
Uri
个值,例如您正在使用的值。 Use FileProvider
将ContentProvider
添加到您的应用中。另请参阅the "Sharing Files" training module和this sample app。
请记住,您的下一个问题很可能是ActivityNotFoundException
,因为相对较少的Android设备会有一个支持text/rtf
MIME类型的应用。