精华内容
下载资源
问答
  • APP数据备份

    千次阅读 2017-02-05 19:51:18
    APP数据备份

    APP数据备份

    Android API 8供了备份和恢复应用程序数据的功能,用户可通过adb backup进行备份,备份文件存放在电脑上自定义位置,再通过adb restore来进行对应用数据的恢复。这种恢复不受限于手机,可将手机A上的备份数据,在装有相同APP的手机B上进行恢复。
    Android支持两类数据备份:
    - SharedPreferences文件:通过 SharedPreferencesBackupHelper备份
    - 其他文件: 通过FileBackupHelper 备份,需要注意的是,一般备份小的配置文件。

    一、演示思路
    编写一个简单的登陆页面,只包含账号、密码输入框,及登陆按钮。
    这里写图片描述

    页面启动时,从SharedPreferences查询账号密码,显示到页面,点击“ENTER”按钮时,向SharedPreferences存入新的账号密码。

    演示步骤:
    1、点击“ENTER”按钮后,将账号密码存入SharedPreferences。
    2、备份数据
    3、清除APP数据
    4、重启APP,看数据是否被清除
    5、还原数据
    6、重启APP,看数据是否被恢复

    二、代码
    数据备份不需要权限声明。默认情况下,是允许数据备份的。
    如果要禁用备份功能,需要在application标签下声明:

    android:allowBackup="false"

    再看看activity的代码:

    /**
     * 测试android:allowBackup数据备份。
     * 备份:adb backup -f allowBackup.ab -noapk com.example.mytestpro
     * 恢复:adb restore allowBackup.ab 
     */
    public class MainActivity extends Activity implements OnClickListener{
        public static final String NAME = "NAME";
        public static final String PWD = "PWD";
        public static final String SP_NAME = "TEST_SP";
        private EditText et_name;
        private EditText et_pwd;
        private Button btn_enter;
        private SharedPreferences sp;
        private Editor editor;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            sp = getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
            editor = sp.edit();
            initView();
        }
    
        private void initView() {
            et_name = (EditText) findViewById(R.id.et_name);
            et_pwd = (EditText) findViewById(R.id.et_pwd);
            btn_enter = (Button) findViewById(R.id.btn_enter);
            btn_enter.setOnClickListener(this);
    
            if (sp != null) {
                et_name.setText(sp.getString(NAME, ""));
                et_pwd.setText(sp.getString(PWD, ""));
            }
        }
    
        @Override
        public void onClick(View v) {
            editor.putString(NAME, et_name.getText().toString());
            editor.putString(PWD, et_pwd.getText().toString());
            editor.commit();
            Toast.makeText(this, "Enter an activity...", Toast.LENGTH_SHORT).show();
        }
    }

    布局文件非常简单,此处不在给出。

    三、测试操作
    1、准备
    安装app,并输入账号密码,点“ENTER”出现上面展示的页面。

    2、备份
    执行备份命令:
    这里写图片描述
    此时Android会弹出提示窗口:
    这里写图片描述

    密码可以为空,即不加密。点击备份,等待备份完成。我的备份文件allowBack.ab放在PC默认用户路径下。
    这里写图片描述

    3、清空APP数据
    清空APP的数据,重新进入页面会看到记录的账号密码都丢失了:
    这里写图片描述

    4、还原APP数据
    使用备份的文件allowBack.ab,恢复APP数据:
    这里写图片描述
    此时Android系统也会弹出恢复提示:
    这里写图片描述
    如果备份时没有输入密码,此处也可以不输入。
    点击恢复后,APP需要重启,重启之后就会看到本文第一张图的页面(此处不再贴图),证明数据恢复成功。

    注意:
    · 如果在系统弹出的备份或恢复页面等待太久,可能出现备份或恢复失败(可能是我测试机的问题)。
    · 在android:allowBackup=”false”时,备份依然能成功,但是恢复必定失败。

    以上就是简单的APP数据备份及还原操作。
    Android还提供了定义备份还原的API,我们可以自定义这个操作过程及操作范围。

    四、自定义备份
    可以通过使用BackupAgentHelper类来定义APP数据备份,如名,这是一个备份的代理帮助类。要使用这个代理,需要在AndroidManifest.xml中注册。
    详细可以参考这篇博客

    展开全文
  • Android备份App数据

    千次阅读 2013-08-08 23:02:20
    1、要有Root权限,和sd...2、备份App本身 //引用:http://blog.csdn.net/KPRF2009/article/details/8277996 private void backupApp(String packageName) throws IOException { File in = new File("/data/app/" +

    1、要有Root权限,和sd卡写权限

    2、备份App本身

    //引用:http://blog.csdn.net/KPRF2009/article/details/8277996

    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();
        }

    3、备份数据:

    new File("/data/data/"+packageName);

    再递归保存里面的数据到SD卡相应的文件夹里

    展开全文
  • Android 数据存数 II-数据备份简介和APP的安装路径; 信息来自官网.

    数据备份概述:

    Android的backup服务让我们可以复制自己的持久化数据到远程”云”存储, 可以为APP数据和设置提供一个还原点. 如果用户执行了恢复出厂设置或者转移到了一个新的Android设备, 系统会在APP重新安装的时候自动还原之前备份的数据. 通过这种方式, 我们的用户不需要复制它们之前的数据或者APP设置. 这个流程对用户完全透明而不会影响到APP的功能或者用户体验.

    在一个备份操作中, Android的备份管理器(BackupManager)查询我们的APP中的备份数据, 然后告知一个备份运输组件, 这东西将会把数据传递给云存储. 在恢复备份的操作中, Backup Manager从备份运输组件取回备份数据并将它交还给APP, 这样APP就可以恢复数据到设备了. 我们的APP可以自己主动选择恢复, 但是通常这是不必要的, 因为Android会在APP安装的时候自动执行一个恢复操作(前提是要有相关联的备份). 所以第一选择应该是当用户重置设备或者更新到一个新的设备并且他们之前安装的APP被重新安装的时候(自动恢复).

    注意: 备份服务不是设计用来为APP跟其它客户端同步数据或者保存在普通生命周期中访问普通数据的. 我们不能在需要的时候去读写这些数据也不能通过Backup Manager提供的API用任何方式访问它们.

    备份运输是Android的backup framework的客户端组件, 它是由设备生产厂家自定义的service provider. 备份运输在不同设备间可能会有所差异, 设备提供了怎样的备份运输对于我们的APP是透明的. Backup Manager API是APP和真正的备份运输之间的适配层, 这样我们的APP只需要跟Backup Manager通信就可以了, 而不用理会底层的实现.

    数据备份并不保证在所有的Android设备上可用. 但是我们的APP不会因为设备不提供一个备份运输就产生不利影响. 如果开发的时候确信用户会从数据备份中受益, 那么可以使用该文档中描述的来实现它, 测试它, 然后发布APP而不关心设备如何执行备份. 当APP运行在一个不支持备份运输的设备上时, 我们的APP会正常运行, 但是将不会收到从Backup Manager发出的回调.

    尽管我们不知道当前的备份运输是什么, 但是我们的备份数据总是可以保证不被其它的APP访问到. 只有Backup Manager和备份运输拥有访问备份数据的权限.

    注意: 因为云存储和运输服务在设备间可能会有所差异, Android不保证使用数据备份的时候的加密问题. 我们应该总是自己谨慎对待使用备份来保存敏感信息, 比如用户名和密码.

    数据备份基础:

    想要备份我们的APP数据, 需要先实现一个备份代理. 备份代理被Backup Manager调用来提供我们想要备份的数据. 它也会在数据恢复的时候调用. Backup Manager处理云存储中所有的数据交换(使用备份运输), 备份代理则处理所有的设备上的数据交换. 要实现一个备份代理, 我们必须:

    1.      在manifest中用android:backupAgent属性声明我们的备份代理.

    2.      注册APP到一个备份服务. Google提供了Android Backup Service作为大多数的Android设备的备份服务. 它要求我们在使用之前先注册APP. 任何其它可用备份服务一般也需要先注册服务, 然后才能提供服务.

    3.      通过下面的两种方式之一定义一个备份代理:

    a)        继承BackupAgent: BackupAgent类提供了APP与BackupManager通信的核心接口. 如果我们直接继承了该类, 则必须重写onBackup()和onRestore()方法来处理数据的备份和恢复操作.

    b)        继承BackupAgentHelper: BackupAgentHelper类提供了对BackupAgent的封装, 使其用法更加的便捷, 它最小化了我们需要实现的代码. 在我们的BackupAgentHelper中, 必须使用一个或者多个”helper”对象, 它会自动备份和恢复指定类型的数据, 这样我们就不用实现onBackup()和onRestore()方法了. Android当前提供的backup helper将会从SharedPreferences和internal storage完整的备份和恢复文件.

    鉴于Google服务的可用性, 暂时不做过多的介绍, 详情可以参考这里. 以后或许会补充…

     

    APP安装路径概述:

    从Android API 8开始, 我们可以选择APP安装在外部存储中(比如SD卡). 这是一个可选的功能, 我们可以在manifest中的android:installLocation属性定义. 如果我们不声明这个属性, APP将会被安装在内部存储, 并且不能被移动到外部存储.

    想要允许系统将APP安装在外部存储, 修改manifest文件包含android:installLocation即可, 值可以设置为”preferExternal”或者”auto”. 栗如:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        android:installLocation="preferExternal"
        ... >

    如果选择了”preferExternal”, 就表示我们要求APP被安装在外部存储中, 但是系统不保证APP一定会被安装在外部存储中, 如果外部存储满了或者不可用, 系统会将其安装在内部存储. 用户也可以在内外部存储之间移动APP.

    如果选择了”auto”, 表明APP可能被安装在外部存储, 但是我们并不指定安装路径的偏好. 系统将会根据一些因素决定将APP安装在哪. 用户也可以在内外部存储移动APP. 当APP被安装在外部存储的时候:

    l  当外部存储mount在了设备上, 那么对APP的性能是没有影响的.

    l  .apk文件被保存在外部存储中, 但是所有私有的用户数据, 数据库, 优化的.dex文件和提取出的原生代码都会被保存在内部存储中.

    l  APP被安装的唯一容器会被随机生成的密钥加密, 并且只能由最初安装的设备才能被解密. 因此, 一个被安装在SD卡上的APP只能为一台设备工作.

    l  用户可以通过系统设置移动APP到内部存储.

    警告: 当用户启用USB块存储来与电脑分享文件的时候, 或者unmount了SD卡的时候, 外部存储中所有的APP将会被直接killed.

    向后兼容性:

    APP可以安装在外部存储的能力只有在Android2.2及更高版本中使用. 被安装在更早版本中的APP只能被安装在内部存储中, 并且不能移动到外部存储(就算在2.2的版本的设备上也不行). 但是如果我们的APP需要被设计支持比Android 2.2更低的版本, 我们可以选择支持在2.2以上的版本支持该功能, 但是可以兼容2.2以下的版本.

    如果想要安装在外部存储并且保存对Android2.2之前版本的兼容性:

    1.      在<manifest>标签中包含android:installLocation属性, 并赋予一个”auto”或者”preferExternal”的值.

    2.      留下android:minSdkVersion属性, 保持它该使用的值(比8小)并确保APP仅适用该版本可以兼容的代码.

    3.      为了编译我们的APP, 修改build target为API Level 8. 这很有必要因为更老的Android库不认识android:installLocation属性, 所以不会编译APP.

    当APP被以API Level小于8安装在设备上, android:installLocation属性会被忽略并且APP会被安装在内部存储中.

    注意: 尽管XML标记比如android:installLocation将在更老的平台上会被忽略, 我们必须小心在minSdkVersion小于8的时候不要使用在APILevel 8中引入的API, 除非我们的APP有必要在代码中提供向后兼容.

    不应该被安装在外部存储的APP:

    当用户使用USB mass storage跟电脑共享文件的时候(或者其它的移除外部存储的操作), 任何安装在外部存储的APP将会被立即杀死. 出了杀死APP之外并使其对用户不可用之外, 这还可以以多种方式破坏一些类型的APP. 为了让APP始终像预期的那样运行, 如果APP使用了任何下列列出的功能, 则我们不应该让APP安装在外部存储中

    1.      Services: APP正在运行的Service将会被杀死, 并且当外部存储重新安装之后不会被重新启动. 但是我们可以注册一个ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播intent, 它将会在安装在外部存储的APP重新可用的时候提醒APP.这时候可以重新启动Service.

    2.      Alarm Services: 使用AlarmManager注册的alarm将会被取消. 我们必须在外部存储重新安装后手动重新注册任何alarm.

    3.      Input Method Engines: 我们的IME将会被默认的IME替代. 当外部存储重新安装后, 用户可以打开系统设置重新设置IME.

    4.      Live WallPapers: 正在运行的LiveWallPapers将会被默认的Live WallPapers代替. 当外部存储重新安装之后, 用户可以再次选择它.

    5.      APP Widgets: 我们的APPWidgets将会从桌面移除. 当外部存储重新启用后, APP Widgets将会在系统重置桌面之前变得不可用(通常需要重启).

    6.      Account Manager: 在外部存储重新安装之前我们用AccountManager创建的账户将会消失.

    7.      Sync Adapters: 在外部存储重新安装之前我们的AbstractThreadedSyncAdapter和所有它的同步功能将会不能工作.

    8.      Device Administrators: 我们的DeviceAdminReceiver和它的所有admin功能将会变得不可用. 其后果会导致相关功能的行为不可预知.

    9.      Broadcast Receivers listeningfor "boot completed": 系统会在外部存储mount到设备之前发出ACTION_BOOT_COMPLETED广播. 如果APP安装在外部存储, 它永远都不会收到这个广播.

    如果APP使用任何上述列出的功能, 那么我们不应该让APP安装在外部存储. 默认情况下, 系统不会让APP安装在外部存储, 所以我们不需要为其担忧. 但是如果我们确定APP永远都不该被安装在外部存储, 我们应该设置android:installLocation的值为”internalOnly”. 虽然这不会修改默认行为, 它明确规定了我们的APP应该仅被安装在内部存储并作为一个提醒表示这个决定已经做出了(⊙﹏⊙)b.

    应该被安装在外部存储的APP:

    简单来说, 任何不使用上述列出的功能的APP安装在外部存储都是很安全的. 大型游戏是最适合安装在外部存储的APP的类型, 因为游戏并不是在关闭的时候应该提供服务的APP. 当外部存储不可用并且一个游戏被杀死的时候, 重新启用外部存储并不会对游戏产生什么影响, 用户重启游戏即可(这里假设游戏在其声明周期方法中保存了游戏的状态).

    如果我们的APP需要很大的空间, 则应该考虑安装在外部存储中, 这样可以为用户在内部存储中空出一些空间.(好理想…)

     

    参考: https://developer.android.com/guide/topics/data/backup.html

    https://developer.android.com/guide/topics/data/install-location.html

     

    展开全文
  • app备份与恢复研究

    千次阅读 2014-06-05 19:40:33
    最近打算搞一个app备份与恢复的小应用,顾名思义,必然包括app备份app的恢复两部分。备份部分由可以分为apk的备份与data的备份两部分。需要注意的是备份与恢复都需要一堆的权限,尤其是恢复的时候。 app备份 ...

    最近打算搞一个app备份与恢复的小应用,顾名思义,必然包括app的备份和app的恢复两部分。备份部分由可以分为apk的备份与data的备份两部分。需要注意的是备份与恢复都需要一堆的权限,尤其是恢复的时候。

    app的备份

    首先看看下面几个目录:

    system/app 系统自带的应用程序apk目录,无法删除。
    data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录。
    data/data 存放应用程序的数据。

    data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)。

    app的备份原理就是把system/app、data/app、data/data中的apk和数据存起来,可以存到sd卡也可以上传到网络。既然如此我们就可写代码了,下面代码只是我自己写来测试用的,不严谨,拷贝可能有问题。

    apk的备份

     public String backupAppPackage(String packageInPath, String packageName)
        {
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try
            {
                File in = new File(packageInPath);
                File out = new File(backupPath + packageName + ".apk");
                out.createNewFile();
                
                fis = new FileInputStream(in);
                fos = new FileOutputStream(out);
                int count;
                byte[] buffer = new byte[256 * 1024];
                while ((count = fis.read(buffer)) > 0)
                {
                    fos.write(buffer, 0, count);
                }
            }
            catch (IOException e)
            {
                e.printStackTrace();
                return "IOException";
            }
            finally
            {
                if (fis != null)
                {
                    try
                    {
                        fis.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                
                if (fos != null)
                {
                    try
                    {
                        fos.flush();
                        fos.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
            return "OK";

        }

    data的备份

        public String backupAppData(String dataInPath, String packageName)
        {
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try
            {
                File in = new File(dataInPath);
                File out = new File(backupPath + packageName);
                out.createNewFile();
                
                fis = new FileInputStream(in);
                fos = new FileOutputStream(out);
                int count;
                byte[] buffer = new byte[256 * 1024];
                while ((count = fis.read(buffer)) > 0)
                {
                    fos.write(buffer, 0, count);
                }
            }
            catch (IOException e)
            {
                e.printStackTrace();
                return "IOException";
            }
            finally
            {
                if (fis != null)
                {
                    try
                    {
                        fis.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                
                if (fos != null)
                {
                    try
                    {
                        fos.flush();
                        fos.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
            return "OK";

        }

    app恢复

    app恢复的时候就稍微有点纠结了,因为这就牵扯到apk的安装,而apk的安装的方法很多,需要根据自己的情况选择。

    情况一

    如果你搞的是一个系统级应用,可以考虑使用反射机制,但是最好是直接使用系统API,由于PackageManager的installPackage函数是隐藏的,所以在用eclipse开发编译的时候需要引入classes.jar。代码如下:

        public void installPackage(Uri apkFileUri) throws Exception
        {
            if (apkFileUri != null)
            {
                //使用放射机制得到PackageManager类的隐藏函数installPackage
                PackageManager pm = context.getPackageManager(); //得到pm对象   
                try
                {
                    //通过反射机制获得该隐藏函数   
                    //                Method installPackage = pm.getClass()
                    //                        .getDeclaredMethod("installPackage",
                    //                                Uri.class,
                    //                                IPackageInstallObserver.class,
                    //                                int.class,
                    //                                String.class);
                    
                    //                //调用该函数,并且给其分配参数 ,待调用流程完成后会回调PkgSizeObserver类的函数   
                    //                installPackage.invoke(pm,
                    //                        apkFileUri,
                    //                        new PkgInstallObserver(),
                    //                        INSTALL_REPLACE_EXISTING,
                    //                        null);
                    


    //直接通过API
                    pm.installPackage(apkFileUri,
                            new PkgInstallObserver(),
                            INSTALL_REPLACE_EXISTING,
                            null);
                    //W/System.err(24923): Caused by: java.lang.SecurityException: Neither user 10053 nor current process has android.permission.INSTALL_PACKAGES.
                    
                    System.out.println("invoke-->>>");
                }
                catch (Exception ex)
                {
                    System.out.println("Exception-->>>");
                    ex.printStackTrace();
                    //Neither user 10053 nor current process has android.permission.GET_PACKAGE_SIZE.
                    throw ex; // 抛出异常   
                }
            }
        }


    IPackageInstallObserver是安装结果的回调,通过它监听安装的结果。
    class PkgInstallObserver extends IPackageInstallObserver.Stub
        {
            public void packageInstalled(String packageName, int returnCode)
                    throws RemoteException
            {
                System.out.println("packageInstalled-->>" + packageName);
            }

        }

    情况二

    如果搞的是一个普通应用则还有两种选择方案。

    第一种是通过获取系统权限,执行命令静默安装,如下:
        public void installApp()
        {
            File dir = new File(backupPath);
            File file = dir.listFiles()[2];
            String apkPath = file.getAbsolutePath();
            String result = execRootCmd("pm install -r " + apkPath);
        }


      // 执行命令并且输出结果 
        public static String execRootCmd(String cmd)
        {
            String result = "";
            DataOutputStream dos = null;
            DataInputStream dis = null;
            
            try
            {
      // 经过Root处理的android系统即有su命令 
                Process p = Runtime.getRuntime().exec("su");
                dos = new DataOutputStream(p.getOutputStream());
                dis = new DataInputStream(p.getInputStream());
                
                Log.i(TAG, cmd);
                dos.writeBytes(cmd + "\n");
                dos.flush();
                dos.writeBytes("exit\n");
                dos.flush();
                String line = null;
                while ((line = dis.readLine()) != null)
                {
                    Log.d("result", line);
                    result += line;
                }
                p.waitFor();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                if (dos != null)
                {
                    try
                    {
                        dos.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                if (dis != null)
                {
                    try
                    {
                        dis.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
            return result;

        }

    第二种最普通的安装是把安装的任务交给系统应用去做,如下:

    public static void install(Context context, String filePath) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);

    }

    需要滴权限

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.INSTALL_PACKAGES" />



    展开全文
  • We found that your app does not follow the iOS DataStorage Guidelines, which is required per the App Store Review Guidelines.   In particular, we found that on launch and/or contentdownload
  • 大数据备份和恢复应用案例--通过分区表备份和恢复数据 海量数据备份和恢复方案  对于OLAP的数据库的业务特点,是将批量的数据加载入库,然后对这些数据进行分析处理,比如报表或者数据挖掘,最后给业务提供一...
  • 据相关数据调查机构最新研究报告称,截止2018年底,中国智能手机用户数量已经突破10亿,位居全球第一,与此同时,相当一部分用户需要手机数据备份的需求,小编为此搜集体验了在应用商店中下载量靠前的一些手机数据...
  • Android 数据 自动备份

    千次阅读 2018-06-26 15:45:07
    自从Android 6.0(API 23)以来,Android已经提供... 数据量限制在每个应用程序用户25MB,并且存储备份数据的费用是免费的。一、备份的文件默认情况下,自动备份在系统分配给您的应用程序的大多数目录中包含文件:1...
  • 使用.bak文件进行数据恢复 问题描述 自用小米10 pro经常死机,于是打算恢复出厂设置,恢复之前进行了备份,有40G的数据,...新建一个app备份(只选择一个APP即可) 从MIUI/back/AllBackup/备份文件夹中复制已备份
  • 然而在使用过程中发现备份区域数据丢失!下面从STM32系列芯片提供的整个备份域来看看啥情况。 电池备份域   首先,这部分在参考手册的电源(PWR)章节有详细的介绍。器件的工作电压 (VDD) 要求介于 1.8 V 到 3.6 V...
  • 今天总结下app备份还原

    千次阅读 2017-08-21 11:29:07
    3.如何备份? 4.如何还原? 5.saf的主要工作? 写完今天的任务就完成了~~~~ 1.获取手机上所有的app列表 无疑要用到应用框架层的packageManager packageManager.getInstalledPackages()可以获取目前安卓机上已经...
  • 数据存储:数据备份:自动备份

    千次阅读 2017-05-08 14:40:15
    自从Android 6.0(API 23)以来,Android已经提供了自动备份应用... 数据量限制在每个应用程序用户25MB,并且存储备份数据的费用是免费的。 一、备份的文件 默认情况下,自动备份在系统分配给您的应用程序的
  • android 数据备份

    千次阅读 2012-12-19 17:41:20
    转自... ... 本章内容为Android开发者指南的 Framework Topics/Data Storage/Data Backup章节,译为"数据备份",版本为Android 4.0 r1,翻译来
  • 企业数据备份方案

    千次阅读 2015-05-18 16:46:20
    我们在选择备份设备时,应该根据企业用户需要备份数据量的大小、对备份速度的要求和对自动化程度的要求等,我们可以选择不同档次的设备。备份设备是多种多样的,主要分为磁带机、自动加载机、磁带库;而磁带库又分为...
  • Django笔记 数据备份和恢复

    千次阅读 2016-05-17 10:04:20
    为防万一,需要对使用的数据手动进行备份。 在数据库迁移时也是有用的。比如将sqlite3迁移到mysql等的时候。如下1.备份备份莫一个APP python manage.py dumpdata app_name --format=json > app.json备份整个db ...
  • 苹果电脑在Leopard操作系统中自带了一个叫时间机器(Time Machine)的软件,用于数据备份和恢复。既然70-80%的用户都不做备份,为什么苹果要在Leopard中隆重推出时间机器这个新功能呢?况且,在Mac OS X上本身就已经有...
  • adb备份恢复指定程序数据

    千次阅读 2015-10-13 16:10:43
    应用程序allbackup=”true”的情况下 备份adb devices #显示已连接的设备列表,测试手机是否正常连接 ...-nosystem 表示不备份系统应用 -noshared表示不备份应用存储在SD中的数据 -apk表示备份应用APK安装包
  • 此页面显示如何手动触发自动备份,键/值备份和还原操作,以确保您的应用程序正确保存和恢复数据。 一、备份如何运行 该部分介绍了Android备份框架中的各种功能,以及它们如何与支持自动备份和键/值备份的应用程序...
  • 但根据我多年在论坛瞎逛发现,大多人其实买了苹果手机后,并不会使用苹果自带的两种备份工具“iCloud”和“iTunes”。 今天我就给使用iPhone的朋友们分享如何正确使用iCloud和iTunes备份软件。 一、iCloud的备份...
  • 云应用数据备份及迁移方案

    千次阅读 2017-04-10 09:57:46
    数据备份0x00 前言目前公司在测试好雨科技的云帮系统,由于其他业务需求,需要将云帮中的某个应用迁移到其他数据中心。花了半天的时间梳理了一下,如何在好雨云平台迁移备份应用数据。好雨云平台应用主要以镜像和...
  • Android5.1.1实现备份应用数据功能

    千次阅读 2016-12-08 18:27:18
    Android5.1.1实现备份应用数据功能 首先先来几个知识点,Android各个应用数据的隔离实际上是通过不同的UID来区别的。UID分配过程不在本文详解。应用安装时会在/data/data/目录下以包名为目录名,创建一个目录,并且...
  • 不仅如此,微信、支付宝等APP也是依附在手机上使用,让手机成为移动钱包的存在,这些都使得手机变得越来越重要。 当然除了手机这个载体之外,其中的数据更是重中之重。毕竟数据这种二次元的产品是我们在现实中无法...
  • 如题,请问下大家有没有知道有什么app是可以选择备份到外部sd卡还是内部sd卡的啊,什么类型的app都行,我主要想看看关于备份的布局。 最好是Google框架的,不是也行,希望大家知道的给我说一说呗!蟹蟹!!
  • Android应用数据备份

    千次阅读 2015-05-26 14:20:31
    在Android上可以很方便地管理数据备份,那些不慎丢失设备的用户会对该功能感激不尽。备份数据会很安全地存储在云端,并且只在具有相同谷歌ID设备上恢复数据。 下面是典型的AndroidManifest.xml文件片段: ...
  • 使用WinSCP脚本(备份)自动数据同步 写在前面:本笔记适用于windows和linux之间数据备份。使用以下脚本前提是windows已将安装了WinSCP程序 脚本文件script.txtoption echo offoption transfer binaryopen sftp://...
  • Mac OS X数据备份方案一例

    千次阅读 2009-08-13 12:13:00
    Mac OS X数据备份 因为我的MacBook Pro的笔记本硬盘不幸坏掉了,里面常用的一些数据没有了,幸好大部分数据都有备份,但是最新的还是没有来得及备份,丢失了一些。平时都是有了新数据就手动复制到外置硬盘里,但是...
  • 黑群晖数据同步备份

    万次阅读 2020-11-07 19:43:52
    有时候忘记备份,导致数据丢失!有时候某些数据做错了一些操作,但是找不到旧版本的文件了,而有了NAS以后,这些问题都可以完美的解决! 现在大部分NAS,拷贝文件都有100MB/s以上的速度,这个速度是所有网上云盘不...
  • android如何查看app数据(无root权限)

    千次阅读 2020-07-14 18:39:34
    如果这条命令执行成功,接下来就可以adb命令直接查看数据。adb命令具体可以参看这里 Android中常用的adb shell命令 ———————————————— https://blog.csdn.net/codehxy/article/details/49763701 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,483
精华内容 28,993
关键字:

备份app带数据