Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> OBB文件和StorageManager類使用介紹

OBB文件和StorageManager類使用介紹

編輯:中級開發

從Android 2.3開始新增了一個OBB文件系統和StorageManager類用來管理外部存儲上的數據安全。如果你過去開發過SymBian S60第三版或以上的版本可能發現都有一個隔離的文件系統,僅根據自己應用的UID才能讀取,當然這樣的設計在iOS和WP7均實現了,Android123提示大家這種叫做隔離文件系統,為什麼Android 2.3的android.os.storage.StorageManager類就是來解決這個問題的。

  如果我們設計一款資源包含比較多的游戲,可能你會發現最終生成的APK文件可能高達300MB,但是APK文件很大導致android系統無法正常安裝,而這麼大其實都是游戲中用到的資源文件,我們放到SD卡上可能其他應用也可以訪問,比如說系統的圖片管理器會索引游戲中的圖片資源,而音樂播放器也會索引資源中的音樂,所以android 2.3的OBB文件(Opaque Binary Blob)可以很好的解決大文件在SD卡上分離出APK文件,同時別的程序沒有權限訪問這樣一種隔離的文件系統。

  android.os.storage.StorageManager類的實例化方法需要使用getSystemService(Contxt.STORAGE_SERVICE)才可以,android開發網再次提醒這是一個API Level至少為9才能調用的類,注意SDK版本以及目標設備的固件。

  String  getMountedObbPath(String filename) //通過一個文件名判斷掛載的OBB文件路徑
  boolean  isObbMounted(String filename) //這個OBB文件是否掛載了
  boolean  mountObb(String filename, String key, OnObbStateChangeListener listener)  //掛載一個OBB文件
  boolean  unmountObb(String filename, boolean force, OnObbStateChangeListener listener)  //反掛載一個obb文件,這個方法是異步的,第二個參數可以強制反掛載。

  我們可以看到掛載和反掛載obb文件時都有一個狀態回調的類,位於android.os.storage.OnObbStateChangeListener,OnObbStateChangeListener接口實現了一個void  onObbStateChange(String path, int state) 方法來回調狀態,第二個參數state的狀態有:

int ERROR_ALREADY_MOUNTED 這個OBB已經掛載了
int ERROR_COULD_NOT_MOUNT 這個OBB不能掛在到系統.
int ERROR_COULD_NOT_UNMOUNT 這個OBB不能反掛載.
int ERROR_INTERNAL 一個內部的系統錯誤導致正在重試掛載obb
int ERROR_NOT_MOUNTED 一個反掛載調用執行時這個obb還沒有掛在過.
int ERROR_PERMISSION_DENIED 當前程序沒有使用這個obb的權限.
int MOUNTED The obb容器已經掛載好了,可以使用了.
int UNMOUNTED The OBB容易現在反掛載完成,將無法再使用. 

 從體而言我們看到Android 2.3系統中很多新的功能都很實用,同時Google正在吸取其他平台的優點,通過更多的實現方法更靈活的處理,而不是其他系統那樣封閉,導致了不越獄很多事情都無法做的尴尬問題,android系統既保證了安全,又處理好了靈活的功能。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved