2016-08-30 73 views
0

我有一个问题,我从来没有通过ACTION_VIEW有问题,打开文件的下一个方法:[Android]产品Intent.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。我已经将图像加载到图像视图中,并且没有问题,因此该文件是有效的,但由于某种原因,当我通过意图打开它时,它会发生冲突。

我知道,它可能是与我创建的文件的方式,我从谷歌获取驾驶它,所以我写使用Apache共享库中的下一个方法文件:

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(); 
} 

我在做什么错了?我不完全确定问题是否与异步执行的副本方法有关。

在此先感谢。

回答

1

我从未有过的问题通过ACTION_VIEW打开文件的下一个方式

该代码永远不会工作,因为第三方应用程序没有权利对你的应用程序的getFilesDir()处理文件。

这是什么我做错了?

您正试图向第三方程序提供无法访问的文件。 Use FileProvider来服务该文件,使用FileProvider.getUriForFile()来获得Uri用于您的ACTION_VIEWIntent

+0

这是我第一次决定使用该路径创建一个文件,我欠你一辈子。我欠你一杯啤酒,谢谢。 –