2009-12-23 91 views
6

我正在編寫一個Android應用程序,並希望讓我的用戶能夠共享它創建的文檔文件。在Android上下載文件

我最想看到的東西是在某個HTTP服務器上託管的文件,因此用戶可以簡單地在Android手機上啓動瀏覽器,瀏覽相關頁面,然後將文件下載到手機中。然後,我希望我的應用能夠打開該下載的文件。

我不確定這是否有可能,但肯定會有興趣聽到任何人知道有關此類事情的任何信息。不幸的是,我似乎很難自己提供答案 - 就像Android SDK的其他部分一樣,相關文檔嚴重短缺。

回答

2

順便說一句,我經歷了一個合理的解決方案,是不是與意圖亂搞等更容易公平位跌跌撞撞......

web視圖widget允許您設置被通知的DownloadListener對象每當WebView被定向到一個它本身不能理解的類型的文件。因此,我之後的功能可以通過在我的應用程序中創建一個WebView並註冊一個DownloadListener來監聽用戶何時下載我的應用程序的文檔文件。

感謝您的幫助!

+0

嘿MAC im在開發小型大學LMS的過程中。你可以讓我知道你的解決方案。我希望用戶看到可用PDF的列表並保存到設備中。並且只有在用戶沒有在文件夾中時再次下載。我認爲它的模擬器是你的解決方案。 thnx – Loshi 2012-08-15 03:30:00

+0

@Loshi:自從我問這個問題以來,我還沒有做過任何Android開發,所以我對這個主題的瞭解有點生疏。您可以查看「WebView」類的['setDownloadListener'](http://developer.android.com/reference/android/webkit/WebView.html#setDownloadListener%28android.webkit.DownloadListener%29)方法,以及創建你自己的'DownloadListener'實現,它只下載文件(如果文件夾中尚不存在的話),但我沒有任何工作示例代碼來做到這一點。給它一個去,我會幫助(盡我所能)與任何出現的具體問題。 – Mac 2012-08-15 06:46:09

+0

您也可以在[此問題](http://stackoverflow.com/questions/9722111)中找到有用的討論。 – Mac 2012-08-15 06:50:41

3

很容易從Web服務器獲取文件。 在您的包括 -

import java.net.URL; 
import java.net.URLConnection; 
import java.io.InputStream; 

在你的代碼 -

URL requestURL = new URL(urlStringForFileYouWantToOpen); 
URLConnection connection = requestURL.openConnection(); 
InputStream response = connection.getInputStream(); 

那麼你想用什麼InputStream。我不確定是否足夠接近您的用戶下載文件的描述,然後從您的應用程序訪問它,但是讓我們讓他們在您的應用程序中獲取文件似乎更直截了當。

4

當用戶訪問您希望支持的文件時,您應該可以使用IntentFilters向Android註冊,以表明您的應用程序能夠處理特定的MIME類型。

請參閱documentation here

+0

這聽起來很像我以後。我收集到,基本上會有一個特定的Intent在下載文件時被解僱,並且通過註冊處理特定的MIME類型,我可以收到該Intent?如果是這樣,我們特別討論了哪種意圖,以及如何執行該註冊?我已經快速瀏覽了您提供的鏈接,但該頁面太長,特別難以找到任何內容。 – Mac 2009-12-24 01:01:19

+0

有意圖類型的枚舉,例如查看,編輯等。我對Android還不夠熟悉,但一步一步地描述,但在您的應用程序的清單文件中,您包含了xml的意圖類型和數據處理,這將註冊你的操作系統。 – 2009-12-24 20:07:34

+0

你可能想跳轉到該頁面上的示例部分 http://developer.android.com/guide/topics/intents/intents-filters.html#npex – 2009-12-24 20:08:06

0

如果你想整合從應用程序的下載然後@ jball的答案是你所需要的,如果你更喜歡該過程是通過瀏覽器啓動然後@斯科特的答案是你所需要的。 從您的描述中,聽起來好像您還希望用戶共享使用應用程序創建的文檔,這需要您的應用程序能夠將應用程序上傳到網絡服務器。像WebDAV這樣的東西可能是理想的選擇,要麼使用org.apache.http庫來實現,要麼使用其中的一個開源實現。