Articles of android backup service

重新安装应用程序时,未调用BackupAgent.onRestore,而是调用bmgr restore命令

我正在测试我的自定义BackupAgent。 以下是我在模拟器和Eclipse ADT中的测试 使用命令测试1备份和恢复—- WORK WELL adb shell bmgr已启用 adb shell bmgr backup app_package adb shell bmgr run ———————-运行备份(BackupAgent.onBackup调用) 在应用程序上,我删除了一些数据 adb shell bmgr restore app_package ——-从备份恢复数据 所有都恢复,包括我在第4步删除的一些数据——工作得好 测试2备份/卸载应用程序/重新安装应用程序—-不工作 adb shell bmgr已启用 adb shell bmgr backup app_package adb shell bmgr run ———————-运行备份(BackupAgent.onBackup调用) adb uninstall app_package —————备份后卸载应用程序 再次调试为/ Android应用程序—-重新安装应用程序但未恢复数据(步骤3中的数据备份) 更新 我发现测试2适用于Nexus 5 Simulator(API 19 – 4.4.2) 但测试2在Nexus […]

向后兼容的BackupAgent

我正在考虑使用自Android 2.2以来可用的新备份API,但需要保持向后兼容性(准确地说是1.5)。 文档说明: 您必须使用的备份服务和API仅在运行API级别8(Android 2.2)或更高级别的设备上可用,因此您还应将android:minSdkVersion属性设置为“8”。 但是,如果在应用程序中实现正确的向后兼容性,则可以为运行API级别8或更高级别的设备支持此function,同时保持与旧设备兼容。 我确实使用3级minSdkVersion构建了8级targetSdkVersion ,并尝试使用包装类(带reflection)来克服如果实现扩展不存在类的类,应用程序将无法运行的问题。 问题在于:由于我们自己没有对BackupHelper类进行实际调用,因此如果类确实存在,我们无法提前检查。 (如使用checkAvailable()方法在Android向后兼容性文档中所述。)因此,将实例化该类并将其BackupAgent转换为BackupAgent 。 但是,由于我们使用reflection,它实际上不会覆盖BackupAgent,并且在请求备份时在运行时发生exception: java.lang.RuntimeException: Unable to create BackupAgent org.transdroid.service.BackupAgent: java.lang.ClassCastException: org.transdroid.service.BackupAgent 以下是我向后兼容的BackupAgent : http : //code.google.com/p/transdroid/source/browse/#svn/trunk/src/org/transdroid/service ,其中BackupAgent.java是’常规’ BackupAgentHelper扩展类和BackupAgentHelperWrapper是基于reflection的包装类。 有人成功实现了具有向后兼容性的BackupAgent吗?

Android备份管理器仅适用于本地传输

我一直试图在我的应用程序上实施备份超过一个月,但直到现在都没有成功。 我已完成Google文档通知的所有步骤:在Manifest上的Google Service Changes上注册(allowBackup,backupAgent和backup.api_key(google服务注册)等等… 清单部分: 事实上,备份正在运行,但只使用本地传输 ,我已经使用bmgr备份/运行/恢复进行了测试: bmgr list transports * android/com.android.internal.backup.LocalTransport com.google.android.gms/.backup.BackupTransportService 但是当尝试使用Google传输(云: com.google.android.gms/.backup.BackupTransportService )时, 它无效,甚至无法从MyBackupAgentHelper调用我的onCreate() 。 我要提到的一点是,当我运行时:bmgr backup bmgr run 在运行命令之后,在logcat上显示了很多“现在暂存备份”(也显示我的应用程序包在此列表中)但它发生得非常快并且看起来事实上并没有完成备份,毕竟,甚至我的MyBackupHelper.onCreate()未被调用: 02-12 21:13:28.889: D/BackupManagerService(547): Now staging backup of com.google.android.talk 02-12 21:13:28.904: D/BackupManagerService(547): Now staging backup of com.google.android.dialer 02-12 21:13:28.907: D/BackupManagerService(547): Now staging backup of com.android.providers.settings 02-12 21:13:28.910: D/BackupManagerService(547): Now staging backup of com.sirma.mobile.bible.android […]

BackupAgent:“无法恢复包…”

我按照数据备份中的描述实现了BackupAgent,注册了一个API密钥并在我的Manifest中声明了BackupAgent。 我认为备份部分的工作非常好; 当我在命令行中运行adb shell bmgr run时,LogCat中会出现以下输出: 01-11 22:23:09.002: DEBUG/PerformBackupThread(97): starting agent for backup of BackupRequest{app=ApplicationInfo{4547c5b8 com.meins.nightclock} full=false} 01-11 22:23:09.002: DEBUG/BackupManagerService(97): awaiting agent for ApplicationInfo{4547c5b8 com.meins.nightclock} 01-11 22:23:09.013: DEBUG/BackupManagerService(97): agentConnected pkg=com.meins.nightclock agent=android.os.BinderProxy@4536a7f8 01-11 22:23:09.032: DEBUG/BackupHelperDispatcher(9122): handling existing helper ‘alarms’ android.app.backup.FileBackupHelper@44e197b0 01-11 22:23:09.032: DEBUG/BackupHelperDispatcher(9122): handling existing helper ‘prefs’ android.app.backup.SharedPreferencesBackupHelper@44e19478 01-11 22:23:09.032: VERBOSE/LocalTransport(97): performBackup() pkg=com.meins.nightclock 01-11 22:23:09.032: VERBOSE/LocalTransport(97): […]

Android SharedPreferences备份无效

我一直在做关于如何在我的Android应用程序中备份SharedPreferences的功课,特别是使用reflection来保持向后兼容性。 至少我一直在努力。 不幸的是,我的代码实际上都没有创建备份! 这包括在仿真器上强制使用adb bmgr命令,如此处所述。 所以我想知道社区是否可以帮助我,并在此过程中提出一些更好的文档? 这是我的代码。 为了使其对其他人尽可能通用,我只需使用包名com.example.andy调用我的应用程序Andy 。 Android Manifest (摘录) … … backupHelper.java 注意:/data/data/com.example.andy/shared_prefs/com.example.andy_preferences.xml package com.example.andy; import android.app.backup.BackupAgentHelper; import android.app.backup.SharedPreferencesBackupHelper; public class BlinkyBackup extends BackupAgentHelper { static final String PREFS_FILE = “andy_preferences”; static final String BACKUP_KEY = “AndyPreferencesBackup”; public void onCreate() { SharedPreferencesBackupHelper backupHelper = new SharedPreferencesBackupHelper(this, PREFS_FILE); addHelper(BACKUP_KEY, backupHelper); } } BackupAgentWrapper […]

Android 23+ – 从备份中排除GCM注册ID

我有一个使用Azure发送推送通知的应用程序。 Azure依次使用GCM发送到Android设备。 我注意到我的AndroidManifest.xml中有一个警告说明 在SDK版本23及更高版本中,您的应用数据将自动备份,并在应用安装时恢复。 您的GCMregistry无法在恢复期间使用,因此您必须确保将其从备份集中排除。 使用属性android:fullBackupContent指定@xml资源,该资源用于配置要备份的文件。 我按照https://developer.android.com/training/backup/autosyncapi.html?hl=in#configuring中的说明进行操作 但是我对如何从备份中排除GCM regID感到难过? 这是我目前的设置。 表现 <application android:allowBackup="true" android:fullBackupContent="@xml/backup_scheme" …….. RES / XML / backup_scheme.xml 我把什么作为路径? 我应该在某个地方放置一个物理文件吗? UPDATE 所以我想我弄明白了。 在我的RegistrationIntentService.java文件中,我将用户registrationID存储在字符串“registrationID”下的共享首选项中。 所以我假设我使用以下内容…… 对?

Android 2.2数据备份:如何备份DefaultSharedPreferences?

我正在从Android OS 2.2实现新的BackupAgentHelper 。 要使其工作,您需要提供要备份的SharedPreferences的名称: public class MyPrefsBackupAgent extends BackupAgentHelper { // The name of the SharedPreferences file static final String PREFS = “user_preferences”; // A key to uniquely identify the set of backup data static final String PREFS_BACKUP_KEY = “prefs”; // Allocate a helper and add it to the backup agent void onCreate() { […]

确定是否以编程方式启用系统范围备份

我想知道是否有可能确定用户是否已启用从我的Android应用程序中将应用程序数据备份到云的选项。 我可以通过调用命令行从adb shell确定这个: bmgr enabled android是否提供了从代码中执行此操作的API?

由UI启动的第1部分持久foreGround android服务,也在睡眠模式下工作,也在手机重启时启动

Status:—我同样接受Karakuri和Sharad Mhaske的回答 ,但自从Sharad Mhaske 在 赏金开始 后回答,赏金应归他所有。 第2 部分 :第2 部分持久的foreGround android服务,以UI启动,也在睡眠模式下工作,也从手机重启开始 在stack overflow ,只能接受 一个答案 。 我认为这两个答案都是可以接受的,但必须选择一个(我随机选择)。 观众被邀请上/下投票答案/问题, 以欣赏努力! 。 我赞成Karakuri的答案来弥补声誉。 Scenario:— 我想让用户单击开始/停止按钮并从UI活动启动/停止服务。 我已经制作了用户界面,所以不关心它。 但只是按钮点击事件的逻辑。 不希望将服务绑定到UI活动 。 如果活动关闭,服务应该继续运行。 想要尽最大努力使服务持久 ,并且在任何情况下都不会停止。 将它赋予最大的权重并将其作为ForGroundSerice运行,因为它具有更高的重要性层次。 (希望没问题?) 除非我的应用程序用户界面点击了停止按钮 , 否则不要让它停止 (或者应该自行重启)即使android回收内存。 我和手机用户都知道了。 这项服务至关重要。 即使在睡觉。 details =我的应用程序执行一些操作,为用户提供的时间(通常为15分钟)hibernate,唤醒并再次执行操作。 这永远不会结束) 如果我需要AlarmManager ,如何实现? 或任何其他方式? 或者只是将操作放在一个无休止的while loop and sleep for 15 minuts在结束时while loop and […]

没有ui的背景应用

我是android开发的新手。 我想制作一个后台应用程序,以便它在后台运行,并且没有任何UI,甚至它的图标也不会显示在桌面上。 简而言之,这是一个秘密的应用程序。 可能吗?