ANDROID下面的游戏更新目录

更新模块的整体方案终于搞定了,包括launcher的自更新,以及framework,app等代码的更新,均测试通过。

很激动地拿到ANDROID上去测试,一下就傻眼了。 在创建upd目录的时候,就遇上了 Permission Denied

我勒个X,我有WRITE_EXTERNAL_STORAGE权限呀。

 

经过百度后发现,cocos2dx返回的是路径为 /data/data/<package_name>/files

这是在内部存储卡上的,而要想对这个进行操作, 只能是使用Context相关API了。

 

在我的更新方案中,我使用了lfs,这当然是不行了。

经过多番搜索,一个东西映入我眼帘

Context.getExternalFilesDir()

 

这个API将会返回  /mnt/sdcard/android/data/<package_name>/files 目录

这个目录与/data ...../files目录一样,会在程序删除时被删除。 这样一来,你的数据将不会保存在玩家机器上了(其实,对于删游戏的玩家,可以考虑留下点什么,哈哈)

 

修改方法很简单,将Cocos2dxHelper.Java中的sFileDirectory赋值的那一行改为如下即可

Cocos2dxHelper.sFileDirectory = pContext.getExternalFilesDir(null).getAbsolutePath();

 

但这个路径需要注意的是,它可以被用户操作, 在APP信息里面, 清除数据就是清除的这个目录下的东西。网上也有人建议换一个地方来保存,以避免这个情况。

 

同时,将数据写在SD卡上,来带的问题就是 用户有没有安装SD卡

 

目前我的做法是,如果用户没有安装SD卡,就提示他去安装一个SD卡。

 

Context.getExternalFilesDir()取到的路径,与通过Enviroment.getExternalStorage取到的目录,再加上 /android/data/<package_name>/files的结果是一样的。

因此,回到getExternalStorage这个地方来,这个函数的注释说得很清楚了。

 

getExternalStorage返回的是 /mnt/sdcard/  这个路径指向的是主SD卡。

 

像小米3,或者是一些其它ANDROID机器,你会发现,根本没有机会让你使用SD卡,你怎么办呢?

答案是,你不需要怎么办,因为你买的小米3 16G,这个16G,就是sd卡,而不是机身内部存储。 

 

到此,可能你还是不放心,万一真的有用户没有SD卡怎么办呢。

我想的是弹一个提示,告诉用户去买张SD卡吧,又不贵。 因为一个没有SD卡的用户,机身内部存储卡估计也早满了,能够安装你的游戏,已经算是挤得不能再挤了,何必为这点东西而大改你的设计。

 

如果想要做得好,也可以先判定是否有SD卡,如果没有SD卡,则还是使用机身内存……。这要看如何取舍了。

 

BTW:在ANDROID上,判定SD卡剩余空间,也挺好弄的。 http://www.oschina.net/question/54100_33506?sort=time

PS:IOS还未测试

作者:码瘾少年·麒麟子 
出处:http://www.cnblogs.com/geniusalex/ 
蛮牛专栏:麒麟子 
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/geniusalex/p/3828897.html

时间: 2024-09-14 00:27:52

ANDROID下面的游戏更新目录的相关文章

我的Android进阶之旅------&amp;gt;Android疯狂连连看游戏的实现之开发游戏界面(二)

连连看的游戏界面十分简单,大致可以分为两个区域: 游戏主界面区 控制按钮和数据显示区 1.开发界面布局 本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定义组件,下面是一个水平排列的LinearLayout. 下面是本程序的布局文件:/res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=

我的Android进阶之旅------&amp;gt;Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piece对象时,程序会直接调用ImageUtil的getPlayImages()方法去获取图片,该方法会随机从res/drawable目录中取得N张图片. 下面是res/drawable目录视图: 为了让getPlayImages()方法能随机从res/drawable目录中取得N张图片,具体实现分为以下几步: 通

android 下载 跨界面更新UI

问题描述 android 下载 跨界面更新UI 项目遇到问题,在一个activity中点击下载一堆文件,然后需要在另一个activity中的fragment中的listview中更新正在下载的item的进度. 我是使用广播加异步更新.但总觉得效率有点慢.有更好的方法吗?

CF游戏更新后win8系统不能全屏怎么办?

CF游戏更新后win8系统不能全屏怎么办?   win8不能全屏是跟官方最近更新的v3.5.9版本相关,在更新中,我们看见了优化win10全屏,那么就有可能是官方优化好win10后win8又出问题了! 那么又该如何解决? 下面百事网小编就提供一个简单调分辨率和调整游戏分辨率就能让游戏全屏的方法! 右键桌面选择屏幕分辨率: 调到1024x768 保存更改! 然后进入游戏,然后游戏的分辨率调到1024x768

Word 2010文档自动生成目录和更新目录方法

  先说一下如果要使用自动生成目录功能,需要对文章中对应的标题设置成相应的标题格式. 1.在此以Word 2010为例进行演示.正文内容见下图: 文档自动生成目录和更新目录方法-word2010文档生成目录"> 2.首先对作为目录的文字进行设置(如下图中的"1.简介").选中文字,鼠标右键弹出菜单,点击"段落". 3.设置大纲级别."1.简介"的大纲级别默认为"正文文本",其为一级目录,因此,将其修改为&quo

Word文档自动生成目录和更新目录的方法

  用过Word文档生成目录功能的朋友都在知道,每次如果修改正文后,目录的内容和页码可能都会发生变化,这就需要我们重新调整,很明显这样给我们带来很多的麻烦.所以Word文档可以自动生成目录和自动更新目录就会帮我们省去很多的麻烦.由于现在大部分人使用的Office 2010 ,所以今天就以Word 2010 为例进行自动生成目录和更新目录的操作设置方法. 先说一下如果要使用自动生成目录功能,需要对文章中对应的标题设置成相应的标题格式. 1.在此以Word 2010为例进行演示.正文内容见下图: 2

在Word2003中更新目录

  如果以后对Word2003文档的内容进行了修改且Word文档的页数发生了变化,可以通过"更新域"操作来获得更新后的目录.在Word文档中选中目录并单击鼠标右键,并在快捷菜单中单击"更新域"命令.在打开的"更新目录"对话框中选中"只更新页码"单选框,然后单击"确定"按钮即会重新根据新的页码情况更新Word目录,如图2008071224所示. 图2008071224 更新Word目录

Android编程实现动态更新ListView的方法_Android

本文实例讲述了Android编程实现动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView.今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView.从今天起,每次学习的源代码都会打包上传,方便各位同学学习,注册帐号即可下载. 布局main.xml: <?xml

3d-求解Android开发3D游戏的虚拟摇杆怎么做?

问题描述 求解Android开发3D游戏的虚拟摇杆怎么做? RT,如何实现3D手机游戏的虚拟摇杆功能,谁能给讲解一下,或分享个样例供大家学习学习? 解决方案 参考:http://imgtec.eetrend.com/blog/4326