簡體   English   中英

如何通過Intent在Android中打開文件

[英]How to open a file in Android via an Intent

如何打開以前存儲在“privat”文件系統中的文件? 該文件由Web服務下載,應存儲在本地fs中。 嘗試通過Intent(Action_View)打開文件時出現“奇怪”錯誤。 雖然文件存在於文件系統中(在模擬器/ eclipse中看到文件瀏覽器中的文件),但它不會顯示在啟動的調用galery活動中。 而不是圖片,galery顯示黑色屏幕沒有內容(除了操作欄)。 嘗試通過此方法打開pdf / movie / mp3文件時會出現同樣的情況(pdf表示文件已損壞)。

BTW:存儲在本地fs上的數據有效(沒有損壞),我從調試器下載文件(通過pull方法),文件可以在我的工作站上打開...

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

代碼中附件的類型是什么? 也許它會返回錯誤的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);

你無法打開那些不在SD卡上的文件。 您需要將文件復制到SD卡然后打開它。

將位置設置為“ openFileOutput("fileName", Activity.MODE_WORLD_READABLE) ,它將起作用。 設置為“ Context.MODE_PRIVATE ”時,其他應用無法讀取存儲的數據(即使是查看)

請參閱stackoverflow上的其他帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM