2012-11-13 94 views
1

我有一個簡單的應用程序,應該處理(顯示,播放...)用戶下載的數據。即當用戶下載應用程序(免費)時,它是空的,或者只填充一些示例數據,但用戶可以下載他們的偏好的實際內容(並可能通過Android計費系統支付)。每個項目都是一個帶有xml文件和多個子文件夾(如音頻和圖像)的文件夾。在開發階段,數據存儲在資產目錄中。下載(支付)的內容到Android應用程序

付款本身並不是這個問題的主題。我在下面真正感興趣:

  • 我在哪裏可以下載的數據存儲在手機裏,這樣它會爲應用程序訪問,但因此它不能由用戶手動(複製例如到另一部手機)。如果我可以將下載的數據存儲在資產目錄中,這將是理想的,但是恐怕一旦生成apk文件,資產被「鎖定」並且不能被輕鬆擴展(或者它們是否可以)?如果我將它們存儲在電話的(或內置存儲器),他們也可以通過媒體播放器或畫廊等其他應用程序訪問,不是嗎?
  • 如果我可以將軟件包作爲一個單獨的文件下載,這將是非常好的 - 是否可以通過內置方法將其打包並將其作爲具有upacked(因此可讀)的子文件夾和文件的文件夾存儲?
  • 當應用程序被下載時,它是一個apk文件。因此,應該可以將樣本數據(即與應用程序一起下載)放置在稍後將要下載的數據的相同位置。我如何確保這一點。
  • 數據可能非常大,因此它不是一個選項,可以在下載後立即將它們全部包含在資產文件夾中,並根據用戶的操作對其解鎖並解鎖。
  • 一旦數據被下載,它們必須脫機工作(即用戶必須能夠在不上網,以顯示它們,因此它不是可以檢查服務器上的用戶的身份 - 他們可以簡單地顯示任何他們先前已經下載)

示例(出於說明目的):有一個應用程序能夠顯示食譜。它在安裝後不包含任何或僅包含幾個。您應該能夠從服務器(每個都有一個存儲在獨立目錄中的特定文件結構)下載食譜(一個接一個)。一旦下載完成,它們將成爲應用程序的一個組成部分,並且即使使用手機的飛行模式,用戶也可以隨時訪問。

希望它至少有一些意義(如果沒有,我可以進一步澄清問題)。我已經找到了關於如何處理存儲在資產中的數據以及如何在SD卡上處理數據的教程,但沒有涉及這個特定主題。

回答

2
  1. 您可以將您的日期存儲在您的應用程序數據文件夾中,基本上它僅適用於您的應用程序。如果要防止將數據複製到另一部手機,請在第一次運行時生成隨機UUID,然後使用它來加密存儲在數據文件夾中的數據。另一部電話將具有不同的UUID和不同的加密密鑰,這使得試圖複製加密數據毫無意義。您甚至可以使用非對稱加密,並將生成的(公用)密鑰發送到服務器,並讓服務器對數據進行編碼並以加密形式發回,從而防止您的數據暴露。

  2. assets/文件夾一般是隻讀的,你可能只在構建步驟把你的數據在那裏。

  3. 使你的文件的.zip文件 - 這些都是緊湊,你可以很容易閱讀文件和文件夾和任何你需要使用java.util.zip.ZipFile

  4. 樣本數據進入assets文件夾,你可以出去複製到數據文件夾在第一次運行。

  5. 一旦你下載數據,並將其保存到設備中,我看不出有任何理由爲什麼你的應用程序將無法在離線

+0

非常感謝@lenik。看起來這可能是我正在尋找的東西。將檢查出來。 – Malis

相關問題