任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

OBB文件和StorageManager类使用介绍 Android开发技术

  从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文件信息 Android开发技术

  今天一起来研究下如何扫描和获取Opaque Binary Blob (OBB)文件信息,有关OBB文件可以在 OBB文件和StorageManager类使用介绍 一文中找到,作为Android 2.3的新特性OBB文件放在SD卡上我们需要通过一种方式识别处理这种文件类型,在android.content.res.ObbScanner类中提供了一个静态的方法来获取一个OBB文件的信息,直接执行ObbScanner.getOBBInfo方法返回一个ObbInfo对象,该方法原型声明为static ObbInfo  getObbInfo(String filePath) ,而有关的ObbInfo类是android.os.Parcelable的子类,构造方法比较特殊,如果我们过去写过Android的AIDL服务对这个Parcelable应该不陌生。   ObbInfo类的字段定义如下    public String filename obb文件名     public int flags OBB文件的相关标识,目前只有OBB_OVERLAY则表示补丁覆盖过定义为1     public String packageName 这个obb文件属于哪个packageName的     public int version obb文件版本     ObbInfo的构造方法参考Android123以前提到的Parcelable类相关内容即可     public static final Creator<ObbInfo> CREATOR         提供了三个基础方法 int  describeContents() String  toString() void  writeToParcel(Parcel dest, int parcelableFlags)

100% Secure Checkout

PayPal / MasterCard / Visa