android应用如何备份 应该是备份安装后的apk本身和对应这个apk的在data目录下面的数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉就是备份一些在data目录下的数据吧,比如数据库文件啊之类的。备份的时候,把这些文件复制到SDcard目录下,然后还原的时候,再拷贝回原来的位置。 可能是我没有描述清楚吧。所以造成4楼5楼的误解。我的意思是将手机上用户安装的应用程序备份,就是备份APK程序包,不是备份应用的内部数据。 如果是备份用户下载的应用程序是可以做到的原理很简单 就是扫描sdcard和flash上面的文件并判断后缀如果是APK的就直接保存或者调用PM的接口去判断是不是有效APK应用文件 然后保存你说的是这个么? 用户自己安装的应用在安装的时候会把安装程序复制到/data/app目录下,可以的话,可以直接备份整个文件夹,不过貌似这个目录需要root权限才能访问吧... 10楼的说法是对的,,我之前就做过类似的功能,,,但得有ROOT权限的手机才能支持 就是备份用户自己安装的应用。我看好多程序都有这个功能,但都没用到root权限啊 如果只是复制出来,不要ROOT也可以的,,,没有ROOT的情况下文件都是只读状态 问题解决了。想不到这么简单。我把备份的关键代码贴出来啦: private void backupApp(String packageName) throws IOException { File in = new File("/data/app/" + packageName + ".apk"); File out = new File("/sdcard/BackupApp/" + packageName + ".apk"); out.createNewFile(); FileInputStream fis = new FileInputStream(in); FileOutputStream fos = new FileOutputStream(out); int count; byte[] buffer = new byte[256 * 1024]; while ((count = fis.read(buffer)) > 0) { fos.write(buffer, 0, count); } fis.close(); fos.flush(); fos.close(); }至于获取已安装程序的包名就不再累述了。不需要任何额外的设置和权限。只要先获取所有程序的包名,然后依次传入上面的函数即可。当然,因为我把程序备份到sdcard上,所以需要申请内存卡的读写权限。 相关应用程序的数据在/data/data/目录里,你可以仿照备份应用那样去做 我尝试备份手机qq的数据。发现根目录下有5个文件夹2个文件只有lib文件夹下的文件可以读到。其他4个文件夹返回的文件list都是null。另外两个文件也无法读出内容。是不是备份数据必须用shell命令备份啊 。这个可以备份吗??模拟器的话有root权限,可以读写data/app下的apk,但没root的手机是不是也是可读的? /data/app是可读的。备份用户安装的应用已经可以了。代码见16楼。现在不清楚的是备份/data/data下的数据怎么搞。 用shell command可能能更简单点 请问你这段代码和直接拷贝原apk文件到目标文件夹有什么区别?谢谢 没人继续回答了吗?好想知道直接复制data/app和data/data里面的文件不就行了吗? android 怎么设置TabHost默认显示的选项卡为选中状态 android项目如何修改sdk版本? 求指教 为什么android模拟器无法上网 android问题 小程序员在android移动应用上的赚钱经历 android进度条问题 全屏模式下onFling()失效 Android开发 天气预报信息获得 Android App 全屏模式下系统输入法显示时会连同系统虚拟键盘也显示,如何让系统虚拟键盘不显示 关于sqlcipher打开EnMicroMsg.db中message时,软件崩溃的问题 初学android开发,视频播放问题 apk强制关闭问题
我的意思是将手机上用户安装的应用程序备份,就是备份APK程序包,不是备份应用的内部数据。
原理很简单 就是扫描sdcard和flash上面的文件并判断后缀
如果是APK的就直接保存或者调用PM的接口去判断是不是有效APK应用文件 然后保存
你说的是这个么?
我看好多程序都有这个功能,但都没用到root权限啊
private void backupApp(String packageName) throws IOException { File in = new File("/data/app/" + packageName + ".apk");
File out = new File("/sdcard/BackupApp/" + packageName + ".apk");
out.createNewFile();
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out); int count;
byte[] buffer = new byte[256 * 1024];
while ((count = fis.read(buffer)) > 0) {
fos.write(buffer, 0, count);
} fis.close();
fos.flush();
fos.close();
}至于获取已安装程序的包名就不再累述了。
不需要任何额外的设置和权限。只要先获取所有程序的包名,然后依次传入上面的函数即可。
当然,因为我把程序备份到sdcard上,所以需要申请内存卡的读写权限。
只有lib文件夹下的文件可以读到。其他4个文件夹返回的文件list都是null。另外两个文件也无法读出内容。是不是备份数据必须用shell命令备份啊
现在不清楚的是备份/data/data下的数据怎么搞。
直接复制data/app和data/data里面的文件不就行了吗?