2012-08-24 47 views
0

這裏是我的代碼Intent.ACTION_VIEW識別每一個文件爲PDF

  Uri fileUri = Uri.fromFile(file); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.setData(fileUri); 
      startActivity(intent); 

所以,它會打開我我的應用程序中指定的文件。我測試的前幾個文件是--PDF,它工作得很好。而現在,我知道它是完整的瘋狂,每一次我什麼都不選,從PDF不同的時間 - 這顯然是試圖使用程序的PDF文件打開選擇文件,並給了我這個消息

The document cannot be opened because it is not a valid PDF document 

有趣的事情:)有什麼想法發生了什麼?

回答

1

使用Intent.setType設置您嘗試打開的每個文件的mimetype。因此,只有可以處理特定MIME類型的應用纔會被打開

編輯:您可以使用MimeTypeMap.getMimeTypeFromExtension來獲取文件的Mime類型。

+0

誰知道什麼文件我會打開下一個?我認爲這個Intent.ACTION_VIEW應該照顧它,我錯了嗎? – Dennis

+0

ACTION_VIEW只會查找爲該過濾器註冊的任何活動。另見我的編輯 – nandeesh

+0

以及,謝謝,最初的問題已解決:)現在我有另一個,但它是洞不同的故事)) – Dennis

0

嘗試明確指定要打開。例如類型的類型

Intent intent = new Intent(); 
Uri path = Uri.fromFile(filename); 
intent.setDataAndType(path, "application/pdf"); 
startActivity(intent); 

,或者如果由於某種原因,你想通過電子郵件發送的PDF格式,你可以做

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("application/pdf"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(emailIntent, "Send email using:"));