2013-08-26 69 views
0

我的應用程序將收到來自其他應用,包括Dropbox的份額的請求。我需要知道我接收的文件類型,但我從Dropbox獲得的MIME類型是「text/plain」。例如:確定共享Dropbox意圖的MIME類型?

Intent i = getIntent(); 
String sMimeType = i.getType(); //Value = "text/plain" 
String sExtraText = i.getStringExtra(Intent.EXTRA_TEXT); //Value = "http://db.tt/tH42K3B7" 

我需要知道圖像,視頻和音樂文件之間的差異。有沒有什麼方法根據意圖中的信息來確定文件類型?或者有沒有辦法使用Dropbox API來做到這一點?

感謝, -Gregg裏諾

編輯:基於從smarx提出的解決方案,我發現了一些Android的代碼,在這裏做到這一點:Android - Detect URL mime type?。然後添加了這個:

sLocation = connection.getHeaderField("location"); 
mimeType = URLConnection.guessContentTypeFromName(sLocation); 

回答

1

我不知道常態做法是什麼,但我認爲text/plain是指數據被在意向共享的類型。 (因爲它是一個URL,純文本似乎是適當的。)

從URL,你可以通過發出HEAD請求找到的MIME類型。首先解決的縮短鏈接以獲得完整的共享鏈接(在Location頭)。然後用dl.dropboxusercontent.com更換www.dropbox.com轉換份額鏈接,直接鏈接到的內容。 (見https://www.dropbox.com/help/201)。然後發出HEAd要求,並採取看看Content-Type標題:(PS。我使用的工具是httpie你可以做同樣的事情curl -I。)

$ http HEAD http://db.tt/tH42K3B7 
HTTP/1.1 302 FOUND 
Connection: keep-alive 
Content-Type: text/html; charset=utf-8 
Date: Mon, 26 Aug 2013 15:12:32 GMT 
Server: nginx 
cache-control: no-cache 
location: https://www.dropbox.com/s/dmbdlf56t043miq/2012-02-11%2019.56.17.jpg 
pragma: no-cache 

$ http HEAD https://dl.dropboxusercontent.com/s/dmbdlf56t043miq/2012-02-11%2019.56.17.jpg 
HTTP/1.1 200 OK 
Connection: keep-alive 
Content-Type: image/jpeg 
Content-length: 1560063 
Date: Mon, 26 Aug 2013 15:12:52 GMT 
Server: nginx 
X-RequestId: a2c4d393af5e0eee80d6f33f68762fd4 
accept-ranges: bytes 
cache-control: max-age=0 
etag: 1525n 
pragma: public 
x-dropbox-request-id: 23f50be73831cde4f39a12d5e3f0af78 
x-server-response-time: 1149 

+0

謝謝 - 這表明我朝着正確的方向前進。看到我上面的編輯 –