应该是备份安装后的apk本身和对应这个apk的在data目录下面的数据

解决方案 »

  1.   

    感觉就是备份一些在data目录下的数据吧,比如数据库文件啊之类的。备份的时候,把这些文件复制到SDcard目录下,然后还原的时候,再拷贝回原来的位置。
      

  2.   

    可能是我没有描述清楚吧。所以造成4楼5楼的误解。
    我的意思是将手机上用户安装的应用程序备份,就是备份APK程序包,不是备份应用的内部数据。
      

  3.   

    如果是备份用户下载的应用程序是可以做到的
    原理很简单 就是扫描sdcard和flash上面的文件并判断后缀
    如果是APK的就直接保存或者调用PM的接口去判断是不是有效APK应用文件 然后保存
    你说的是这个么?
      

  4.   

    用户自己安装的应用在安装的时候会把安装程序复制到/data/app目录下,可以的话,可以直接备份整个文件夹,不过貌似这个目录需要root权限才能访问吧...
      

  5.   

    10楼的说法是对的,,我之前就做过类似的功能,,,但得有ROOT权限的手机才能支持
      

  6.   

    就是备份用户自己安装的应用。
    我看好多程序都有这个功能,但都没用到root权限啊
      

  7.   

    如果只是复制出来,不要ROOT也可以的,,,没有ROOT的情况下文件都是只读状态
      

  8.   

    问题解决了。想不到这么简单。我把备份的关键代码贴出来啦:
        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上,所以需要申请内存卡的读写权限。
      

  9.   

    相关应用程序的数据在/data/data/目录里,你可以仿照备份应用那样去做
      

  10.   

    我尝试备份手机qq的数据。发现根目录下有5个文件夹2个文件
    只有lib文件夹下的文件可以读到。其他4个文件夹返回的文件list都是null。另外两个文件也无法读出内容。是不是备份数据必须用shell命令备份啊
      

  11.   

    。这个可以备份吗??模拟器的话有root权限,可以读写data/app下的apk,但没root的手机是不是也是可读的?
      

  12.   

    /data/app是可读的。备份用户安装的应用已经可以了。代码见16楼。
    现在不清楚的是备份/data/data下的数据怎么搞。
      

  13.   

    用shell command可能能更简单点 
      

  14.   

    请问你这段代码和直接拷贝原apk文件到目标文件夹有什么区别?谢谢
      

  15.   

    没人继续回答了吗?好想知道
    直接复制data/app和data/data里面的文件不就行了吗?