[Android ]Intent.ACTION_VIEW - 未找到

[Android ]Intent.ACTION_VIEW - Not found

我遇到了问题,通过 ACTION_VIEW 打开文件我从来没有遇到过以下问题:

File file = new File(getActivity().getFilesDir(), TEMP_FILE_NAME);
String dataType = "image/*";

if (file.exists()) {

    Intent fileIntent = new Intent(Intent.ACTION_VIEW);
    fileIntent.setDataAndType(Uri.fromFile(file), dataType);
    fileIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    Intent intent = Intent.createChooser(fileIntent, "Open file");
    try {
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
        Log.e(TAG, "There is a problem when opening the file");
    }
} else {
    Toast.makeText(getContext(), "Invalido", Toast.LENGTH_LONG).show();
}

我现在遇到的问题是,即使文件存在,当我选择应用程序打开文件时,它也会立即关闭并告诉我 Not found。我已经将我正在加载的图像放在图像视图中并且没有问题,所以该文件是有效的但由于某种原因当我通过意图打开它时它有冲突。

我知道这可能与我创建文件的方式有关,我正在从 Google 驱动器中检索它,因此我使用 Apache Commons 库以另一种方式编写文件:

DriveContents contents = result.getDriveContents();
InputStream inputStream = contents.getInputStream();

File file = new File(getActivity().getFilesDir(), TEMP_FILE_NAME);
try {
    OutputStream outputStream = new FileOutputStream(file);
    IOUtils.copy(inputStream, outputStream);
    IOUtils.closeQuietly(inputStream);
    IOUtils.closeQuietly(outputStream);
} catch (IOException e) {
    e.printStackTrace();
}

我做错了什么?我不确定问题是否与异步执行的复制方法或类似的东西有关。

提前致谢。

I have never had problem opening files via ACTION_VIEW the next way

该代码永远不会起作用,因为第三方应用无权使用您应用 getFilesDir() 上的文件。

What is it I am doing wrong?

您正在尝试向第三方程序提供无法访问的文件。 Use FileProvider 提供文件,使用 FileProvider.getUriForFile() 获取 Uri 以在您的 ACTION_VIEW Intent 中使用。