Questions tagged «android-backup-service»

4
什么是“ android:allowBackup”?
由于新的ADT预览版(版本21) ,他们有一个新的皮棉警告,告诉我在清单文件,接下来的事情(在应用程序标签): 应该将android:allowBackup显式设置为true或false(默认情况下为true,这可能会对应用程序的数据产生一些安全隐患) 他们在官方网站上写道: 进行了两项新检查:必须明确确定您的应用是否允许备份以及标签检查。有一个用于设置库路径的新命令行标志。编辑时对增量皮棉分析的许多改进。 这是什么警告?什么是备份功能,如何使用? 另外,为什么警告告诉我它具有安全隐患?禁用此功能有哪些不利和好处? 清单备份有两个概念: “机器人:allowBackup ”允许备份和通过ADB恢复,如图所示在这里: 是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则即使通过全系统备份也不会执行应用程序的备份或还原,否则将导致所有应用程序数据通过adb保存。此属性的默认值为true。 这被认为是安全问题,因为人们可以通过ADB备份您的应用程序,然后将您应用程序的私有数据存储到他们的PC中。 但是,我认为这不是问题,因为大多数用户不知道什么是adb,如果这样做,他们也将知道如何对设备进行root操作。仅当设备启用了调试功能时,ADB功能才起作用,并且需要用户启用它。 因此,只有将其设备连接到PC并启用调试功能的用户才会受到影响。如果他们的PC上有使用ADB工具的恶意应用程序,则可能会出现问题,因为该应用程序可以读取私有存储数据。 我认为Google应该只在开发人员类别中添加默认情况下禁用的功能,以允许通过ADB备份和还原应用程序。 “ android:backupAgent ”允许使用云的备份和还原功能,如此处和此处所示: 实现应用程序的备份代理的类的名称,它是BackupAgent的子类。该属性值应该是完全限定的类名称(例如“ com.example.project.MyBackupAgent”)。但是,作为简写形式,如果名称的第一个字符是句点(例如,“。MyBackupAgent”),则会将其附加到元素中指定的包名称中。没有默认值。必须指定名称。 这不是安全问题。

6
Android备份/还原:如何备份内部数据库?
我已经实现了BackupAgentHelper使用提供的FileBackupHelper来备份和还原我拥有的本机数据库。这是您通常与一起使用ContentProviders并驻留在中的数据库/data/data/yourpackage/databases/。 有人会认为这是一种常见的情况。但是文档尚不清楚该怎么做:http : //developer.android.com/guide/topics/data/backup.html。这些典型数据库没有BackupHelper专门针对的数据库。因此,我使用了FileBackupHelper“ /databases/”,将其指向“ ”中的.db文件,在我的所有db操作(例如db.insert)中引入了锁定ContentProviders,甚至尝试在创建“ /databases/”目录之前使用onRestore()它,因为安装后该目录不存在。 过去,我已经SharedPreferences在其他应用程序中成功实现了类似的解决方案。但是,当我在模拟器2.2中测试我的新实现时,我看到正在LocalTransport从日志执行备份,以及正在执行(并onRestore()调用)还原。但是,永远不会创建db文件本身。 请注意,所有这些都是在安装之后,在首次启动应用程序之前,在执行还原之后。除此之外,我的测试策略基于http://developer.android.com/guide/topics/data/backup.html#Testing。 另请注意,我并不是在谈论我自己管理的一些sqlite数据库,也不是在备份到SDcard,自己的服务器或其他地方。 我确实在文档中看到有关数据库建议使用自定义的提及,BackupAgent但它似乎并不相关: 但是,如果需要执行以下操作,则可能需要直接扩展BackupAgent:*备份数据库中的数据。如果您有要在用户重新安装应用程序时还原的SQLite数据库,则需要构建一个自定义的BackupAgent,该备份代理在备份操作期间读取适当的数据,然后创建表并在还原操作期间插入数据。 请清楚一些。 如果我真的需要自己做到SQL级别,那么我担心以下主题: 打开数据库和事务。我不知道如何在应用程序工作流程之外从此类单例类关闭它们。 如何通知用户正在进行备份并且数据库已锁定。这可能需要很长时间,所以我可能需要显示进度条。 恢复时该如何做。据我了解,仅当用户已经开始使用该应用程序(并将数据输入数据库)时,还原才可能发生。因此,您不能假定只将备份的数据还原到位(删除空白或旧数据)。您必须以某种方式将其加入其中,由于id的原因,对于任何不重要的数据库都是不可能的。 还原完成后如何刷新应用程序而又不会使用户陷入某些无法访问的点。 我可以确定数据库已在备份或还原中升级吗?否则,预期的架构可能不匹配。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.