2016-08-30 19 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

這是我第一次決定使用該路徑創建一個文件,我欠你一輩子。我欠你一杯啤酒,謝謝。 –