2012-09-25 43 views
16

如何打開以前存儲在「privat」文件系統中的文件?該文件正在通過web服務下載,並應存儲在本地fs上。 嘗試通過Intent(Action_View)打開文件時出現「奇怪」錯誤。儘管該文件存在於文件系統中(在emulator/eclipse中的文件瀏覽器中看到了該文件),但它不會顯示在啓動的調用Galery活動中。畫面中沒有內容(除了操作欄)顯示黑屏。嘗試通過此方法打開pdf/movie/mp3文件時會發生同樣的情況(例如,pdf說文件已損壞)。如何通過意圖在Android中打開文件

BTW:已存儲在本地fs中的數據是有效的(未損壞),我從網上下載的調試器(通過拉法)的文件和文件可以在我的工作站上打開...

public void onAttachment(Context context, Attachment attachment) { 
    try { 
     //Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg) 
     FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE); 
     fos.write(attachment.getBinary()); 
     fos.flush(); 
     fos.close(); 
     File f = context.getFileStreamPath(attachment.getAttachmentFileName()); 
     Uri uri = Uri.fromFile(f);   
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(uri,attachment.getAttachmentMimetype()); 
     context.startActivity(intent);     
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}   
+0

也許http://stackoverflow.com/questions/11068648/launching-an-intent-for-file - 和 - MIME類型/ 11088980#11088980可以幫助。 – ademar111190

回答

2

將位置設置爲「openFileOutput("fileName", Activity.MODE_WORLD_READABLE)」時,它將起作用。其他應用無法讀取數據(即使是觀看)設置爲當存儲「Context.MODE_PRIVATE

看到other post on stackoverflow

12

代碼中附件是什麼類型?也許它返回錯誤的MIME類型?

此代碼的工作對我來說:

File file = new File("EXAMPLE.JPG"); 

// Just example, you should parse file name for extension 
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".JPG"); 

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), mime); 
startActivityForResult(intent, 10); 
+0

不,這將無法正常工作......問題是活動成功啓動(Galery,電影/音頻播放器,pdf閱讀器),但內容(文件)似乎無效... –

+0

附件返回正確的mimetype,否則正確的活動(Galery/Mediaplayer/PDF-Reader)根本不會被啓動。 –

+0

錯誤。 getMimeTypeFromExtension的參數必須是不帶前導'。'的文件擴展名。 – armandooj

2

您無法打開文件,這些文件不是這樣的SD卡。 你需要將文件複製到SD卡然後打開它。

+0

你可以給我一個鏈接,這是由谷歌證實(在SDK中的文檔)。我在官方文檔中沒有找到任何有關這方面的信息... 順便說一下:當我在自己的活動中打開文件時,它可以處理圖片的效果... –

+0

不幸的是,我說的是經驗,所以我沒有有一個鏈接。但它的上傳或電子郵件中的文件是沒有在SDCARD中的相同的問題...它與打開webview頁面等相同。希望它有助於...對不起,如果不是.. – Givi

+0

所以我必須編寫自己的查看器 - 可以處理存儲在該私人文件夾中的文件的「活動」? –

相關問題