本文原创,转载爬虫请保留原文地址:http://maosidiaoxian.iteye.com/blog/1488067
android中数据存储方式主要有四种,即SharePreferences,Sqlite3,文件和ContentProvider。所以要对本程序的数据进行备份,其实也就是把这些数据文件拷贝到另外的目录,在恢复时再拷贝回来。
以下以我的一个程序为例,其中使用了SharePreferences及sqlite3两个数据存储的方法。在备份时将其拷到SD卡,恢复时再拷贝回来。由于对文件流的操作在这里不是我应该关注的地方,于是直接用了apache开源项目commons中的IO包里的FileUtils类的方法。
在使用过程中,发现直接复制到手机中结果是操作失败,不知道是不是我权限没有添加上。不过复制到SD卡上却是成功的。
下面的ApkInfo及ResourceUtil是我自己封装的,顾名思义,里面包含程序的图标、包名、程序名等等一系列信息,所在的包放在了google code(http://code.google.com/p/cfuture-androidkit/)有sourceforge(http://sourceforge.net/projects/cf-androidkit/files/)中。
备份与恢复的代码如下:
/*
* @(#)Backup.java Project:UniversityTimetable
* Date:2012-4-16
*
* Copyright (c) 2011 CFuture09, Institute of Software,
* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.lurencun.cfuture09.universityTimetable.backup.util;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import android.content.Context;
import android.os.Environment;
import android.widget.Toast;
import com.sinaapp.msdxblog.androidkit.util.ResourceUtil;
import com.sinaapp.msdxblog.androidkit.util.entity.ApkInfo;
/**
* @author Geek_Soledad (66704238@51uc.com)
*/
public class Backup {
private String SHARED_PREFS;
private String DATABASES;
private String APP_PATH;
private Context mContext;
private String BACKUP_PATH;
private String BACKUP_DATABASES;
private String BACKUP_SHARED_PREFS;
public Backup(Context context) {
mContext = context;
ApkInfo apkInfo = new ResourceUtil(context).getApkInfo();
APP_PATH = new StringBuilder("/data/data/").append(apkInfo.packageName)
.toString();
SHARED_PREFS = APP_PATH + "/shared_prefs";
DATABASES = APP_PATH + "/databases";
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
BACKUP_PATH = "/sdcard/lurencun/backup";
} else {
BACKUP_PATH = "/com.lurencun/backup/";
Toast.makeText(mContext, "没有检测到SD卡,可能无法备份成功", Toast.LENGTH_SHORT)
.show();
}
BACKUP_PATH += apkInfo.packageName;
BACKUP_DATABASES = BACKUP_PATH + "/database";
BACKUP_SHARED_PREFS = BACKUP_PATH + "/shared_prefs";
}
/**
* 备份文件
*
* @return 当且仅当数据库及配置文件都备份成功时返回true。
*/
public boolean doBackup() {
return backupDB() && backupSharePrefs();
}
private boolean backupDB() {
return copyDir(DATABASES, BACKUP_DATABASES, "备份数据库文件成功:"
+ BACKUP_DATABASES, "备份数据库文件失败");
}
private boolean backupSharePrefs() {
return copyDir(DATABASES, BACKUP_DATABASES, "备份配置文件成功:"
+ BACKUP_SHARED_PREFS, "备份配置文件失败");
}
/**
* 恢复
*
* @return 当且仅当数据库及配置文件都恢复成功时返回true。
*/
public boolean doRestore() {
return restoreDB() && restoreSharePrefs();
}
private boolean restoreDB() {
return copyDir(BACKUP_DATABASES, DATABASES, "恢复数据库文件成功", "恢复数据库文件失败");
}
private boolean restoreSharePrefs() {
return copyDir(BACKUP_SHARED_PREFS, SHARED_PREFS, "恢复配置文件成功",
"恢复配置文件失败");
}
private final void showToast(String msg) {
Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
}
/**
* 复制目录
*
* @param srcDir
* 源目录
* @param destDir
* 目标目录
* @param successMsg
* 复制成功的提示语
* @param failedMsg
* 复制失败的提示语
* @return 当复制成功时返回true, 否则返回false。
*/
private final boolean copyDir(String srcDir, String destDir,
String successMsg, String failedMsg) {
try {
FileUtils.copyDirectory(new File(srcDir), new File(destDir));
} catch (IOException e) {
e.printStackTrace();
showToast(failedMsg);
return false;
}
showToast(successMsg);
return true;
}
}
分享到:
相关推荐
*还原应用程序+数据备份。 *从备份中恢复文本消息。 *从备份中恢复通话记录。 *从备份还原WiFi接入点(临)。 *恢复从备份(专业版)的蓝牙数据。 *恢复用户从备份(临)字词典。 *恢复备份(临...
- 实现通讯录数据的备份和恢复功能,以便在需要时可以轻松地还原数据。 - 提供联系人信息的分类和分组功能,方便用户根据自己的需求进行管理和查找。 - 集成社交网络功能,使用户可以将通讯录中的联系人信息与社交...
钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友! 免费版功能: * 无时间限制 *...
本资源是使用Android+Json+SSM和MySQL进行数据后台交互,模拟云备份云恢复的一个程序,包括了源码的数据库建表文件,读者可自行执行
"Android极客"一个专门为Android程序猿打造的极客应用截图 主要功能密码管理Github Trending,搜索干货笔记......主要技术MVP架构Retrofit OkhttpRxJava RxAndroidEventBusGlideDagger2Material ...
可以根据设置和需求,对整个系统或者部分软件进行备份和还原,以免误操作造成的系统损坏和软件损坏,它不仅能够备份手机上的所有程序,还能保存每个程序的数据、Android市场链接等等。十分强大,大大减少了恢复系统...
一次备份和还原单个程序,并支持多个程序的批量备份和还原(静默/无人值守还原)。 恢复系统应用程序应该是可能的,而无需随后重新启动。 oandbackup还可以卸载系统应用程序。 以这种方式处理系统应用程序取决于...
少有的一款能在android设备上进行数据恢复的工具,如果手机内存比较大,一般在进行数据扫描时需要花费较长的时间,恢复文档可能比较有效,图片和音视频类的文件恢复后可能也是一个已损坏的文件,急于从手机上恢复...
Android 上最快的数据备份工具!您可以将应用程序和联系人,短信和通话记录,书签和日历备份到 SD 卡/Gmail。您再也不会丢失数据!这是超级备份的免费无广告版本,如果您需要经常对手机系统中的重要数据进行备份,您...
它备份应用程序,完整的应用程序数据以及一些Android元数据。 cbackup cbackup是针对已扎根的Android设备的简单备份/还原脚本。 它备份应用程序,完整的应用程序数据以及一些Android元数据。 快速入门在Termux中运行...
该应用程序正在解决的主要问题是:当您备份PC Companion制作的数据时,然后将android降级。 PC Companion无法还原备份。 至于我有Android 5,想降级到4.4。 我已经进行了备份,迁移到4.4,然后尝试还原备份。 但是PC...
[✔]更改设备的Android ID,可从备份中恢复出厂设置或将其恢复为出厂设置 [✔]保护备份以防删除 [✔]发送备份(至电子邮件/云)并在1中单击导入 [✔]备份→验证→卸载一口气的应用程序 [✔]只需单击即可冻结/...
11.5.3 秘诀97:触发备份与还原操作 249 11.6 android 的动画功能 250 第12 章 调试 255 12.1 eclipse 内置的调试工具 255 12.1.1 秘诀99:设置运行配置 255 12.1.2 秘诀100:使用ddms 256 12.1.3 秘诀101:...
“基于Android的高校学习社区APP的设计与实现”是一款专为大学生设计的移动应用程序,旨在提供一个便捷的学习交流平台。该APP通过整合各种学习资源,为学生提供了一个集课程学习、知识分享、学术交流于一体的环境。...
电话短信备份和还原. 保护手机的数据和通讯安全。 软件管理: 系统软件和本地软件,可以显示软件的详细信息,启动,删除应用程序.连接获取服务器上软件的评分信息等功能。程序锁可以指定要保护的程序, 用户进入要保护...
Android操作系统通过ADB实用程序提供了已安装软件包的备份/还原机制。 默认情况下,将对应用程序进行完整备份,包括/ data中存储的私有文件,但是可以通过实现类来自定义此行为。 这样,应用程序可以使用自定义文件...
数据备份与恢复:为防止数据丢失,应用支持数据的备份与恢复功能,确保信息安全。界面设计上,该应用采用直观的用户界面,操作简洁明了,便于用户快速上手。在配色和布局方面,通常会考虑易用性和美观性的结合,以...
建议您使用 PC 同步工具将 Android 手机上的个人数据备份到电脑上。 2. 在电脑上运行 ROM 更新实用程序 (RUU) 将 ROM 更新安装到 Android 手机上。(下一节内容将详细介绍如何安装 ROM 更新)。 3. 使用 PC 同步工具将...
软件类别:备份还原 软件大小:10.7 MB 适用固件:2.2及更高固件 内置广告:没有广告 适用平台:Android 一款Android专用的数据恢复软件,使用智能手机和电脑一样,最让人担心的莫过于误删东西,那个时候抓狂啊,...
应用数据:将大多数应用程序恢复到与备份时相同的状态 特殊应用数据:如授予的权限、电池优化设置、应用的 Magisk 隐藏状态、SSAIDs 等 WiFi 网络配置 等等~~ 另外只有在已 root 或运行 Shizuku 时才能批量恢复...