本文原创,转载爬虫请保留原文地址: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;
}
}
分享到:
相关推荐
【Android 数据备份恢复实现】 随着移动互联网的快速发展,Android设备上的数据变得日益重要,尤其是在3G时代,通讯录、日程、短信和邮件等数据的丢失可能会给用户带来极大困扰。针对这一问题,Android提供了数据...
因此,对于Android用户而言,拥有一款高效可靠的数据备份与恢复工具至关重要。本文将详细解析名为“超级备份「Super Backup & Restore」V2.3.28”的应用,它是Android平台上的一款快速、全面的数据管理解决方案。 ...
Android云终端的系统备份与还原方案主要针对的是云课堂环境中Android云终端的稳定性问题。传统的计算机教室由于难以集中管理和维护,逐渐被云课堂取代,其中云终端作为学生终端,其数量大、功能丰富,因此系统的稳定...
【Android高级应用源码-通讯录+备份还原.zip】是一个包含Android应用程序源代码的压缩包,专注于实现通讯录管理和备份还原功能。这个项目对于开发者来说是深入理解Android平台上的通讯录操作、数据存储以及备份机制...
在Android系统中,通讯录是用户的重要数据之一,包含了...通过以上步骤,我们可以构建一个完整的Android手机通讯录备份恢复功能。在实际开发中,还应考虑性能优化、数据加密安全等方面,确保用户数据的安全和高效处理。
总之,这个项目提供了一个完整的从Android客户端到服务器端的数据备份和恢复解决方案,涵盖了移动开发、Web服务、数据库管理和数据传输等多个方面,对于学习和实践Android、JSON、SSM以及MySQL的开发者来说,是一个...
这种双备份策略提高了数据的可靠性,即使数据库出现问题,也能从文件中恢复笔记。 总的来说,这个Android笔记本小程序源码涵盖了许多核心的Android开发技术,包括用户认证、数据库管理、图片处理和文件系统交互。...
在安卓操作系统中,备份短信是一项重要的任务,尤其是对于那些经常收发...通过理解Android的系统备份功能和利用像BackupSMS这样的第三方应用,我们可以有效地管理和保护我们的短信数据,确保在任何情况下都能轻松恢复。
通过深入研究这些方面,开发者不仅可以提升对Android系统和备份恢复机制的理解,还能为开发类似功能的应用提供宝贵的参考。同时,对于那些想要定制钛备份功能或者扩展其功能的开发者,源码分析是必不可少的步骤。
在Android系统中,备份是确保用户数据安全的重要环节。标题提到的“android备份系统的短信”是指利用Android提供的备份服务来保存手机中的短信数据。本文将深入探讨如何通过系统内置的短信Content Provider获取短信...
这可以通过在AndroidManifest.xml文件中配置`<application>`标签的`android:allowBackup="false"`属性来实现,这样在安装新APK时,旧的数据将不会被备份和恢复。另外,可以添加清理代码到安装新版本前的逻辑中,例如...
以上是对“android系统手机人人网备份源码”项目的主要知识点分析,这个项目不仅可以帮助开发者深入理解Android应用开发,还提供了一个实践网络数据备份和恢复功能的实例。通过学习和研究这个源码,可以提升在...
在实际应用中,NFC备份方案可能需要配合特定的应用程序或服务,例如Google的Android Beam或Apple的AirDrop,它们提供了友好的用户界面和后台处理机制,使得数据备份和恢复更加便捷。 总的来说,NFC移动终端数据备份...
Android提供了`android.app.backup.BackupAgentHelper`和`android.app.backup.BackupManager`类来实现应用数据的备份和还原。开发者可以自定义备份策略,选择需要备份的数据,如SQLite数据库、SharedPreferences等。...
它是一个实用工具,专门设计来帮助用户从Android设备的备份文件中恢复数据。这个工具可能使用了Java编程语言开发,因为文件扩展名是.jar,这通常是Java应用程序的归档文件。 在描述中,“android备份文件提取工具_...
在Android生态系统中,数据备份是至关重要的,尤其是在设备丢失或系统升级前确保个人数据安全的关键步骤。"android-backup-extractor"是一个专为Android用户设计的开源工具,它允许用户方便地提取和重新打包由ADB ...
*还原应用程序+数据备份。 *从备份中恢复文本消息。 *从备份中恢复通话记录。 *从备份还原WiFi接入点(临)。 *恢复从备份(专业版)的蓝牙数据。 *恢复用户从备份(临)字词典。 *恢复备份(临...
这份名为"Android程序研发源码Android Gmail备份手机短信源码.rar"的压缩包文件包含了实现这一功能的源代码,让我们深入探讨一下其中涉及到的关键知识点。 1. Android SDK和编程环境: 开发Android应用需要Java或...
功能强:可备份恢复split apk 算法多:目前支持的压缩算法有 tar(默认) lz4 zstd。 速度快:即使使用zstd压缩算法速率依旧快速。 1. 已经root的安卓手机,安装mt文件管理器, 2. 将该zip解压到手机人意目录,可以...