问题标签 [android-backup-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
247 浏览

android - android 备份代理和 SherlockMapActivity

我尝试在我的 Android 应用程序中实现备份代理,但每次恢复时都会遇到一个奇怪的问题(首次启动时):

在此处完成日志:https ://gist.github.com/romainguefveneu/1acc78cabbed65fba4b7

恢复过程运行良好,当我第二次打开该应用程序时,我的数据已正确恢复。

加载 SherlockMapActivity 似乎是一个问题,我在我的项目中使用了所有这些库:

  • actionbarsherlock-plugin-maps-4.2.0.jar
  • bugsense-3.0.1.jar
  • commons-io-2.0.1.jar
  • gson-2.2.2.jar
  • joda-time-2.1.jar
  • ocpsoft-pretty-time-1.0.7.jar

有人有想法吗?

0 投票
2 回答
1782 浏览

android - Android 备份服务 - 备份的时间和频率?

我想使用Android 备份服务备份我的应用程序的数据,但我担心网络使用情况。我有大约 500KB 的数据需要为每个备份操作上传。不多,但如果每天备份 10 次,可以轻松达到 5MB。

我的问题是,Android 决定何时以及多久执行一次备份?在我致电dataChanged(). 它没有解释什么条件构成了“时机”。

您可以随时通过调用请求备份操作 dataChanged()。此方法通知备份管理器您要使用备份代理备份数据。然后,备份管理器会onBackup()在将来的适当时间调用您的备份代理的方法。

0 投票
1 回答
480 浏览

android - 从名称中获取地址的地理编码器在三星 Galaxy Tab 2 中不起作用?

我正在使用地理编码器来获取我的应用程序中的纬度和经度。geocoder.getFromLocationName(address, maxResults)是我为此使用的方法。除了三星 Galaxy Tab 2 设备外,它在所有设备上都能正常工作

代码 :

日志猫:

我认为问题是addPackageParticipantsLocked任何建议都会非常有帮助,谢谢。

0 投票
2 回答
74 浏览

android - Android 服务无法启动

我正在尝试在 android 中实现简单的服务,但我无法统计基本服务。

这是我的主要课程:

我也像这样在清单中输入了服务:

有人知道为什么我无法启动服务吗?

0 投票
0 回答
1827 浏览

android - 安卓数据备份服务

我正在尝试使用数据备份服务,以保存用户共享首选项,如此所述。但是,我在尝试在不同的 Android 版本中进行测试时遇到了以下问题。

Android 2.3.4:扩展 BackupAgentHelper 后,尝试使用 bmgr 工具测试服务(按照此处的步骤),在我的带有 Android 2.3.4 的 Motorola Atrix 中,我看到以下消息:

当然,没有创建备份,卸载并重新安装我的应用程序后,没有调用 onRestore。

Android 4.0:我还尝试在带有 API14 的模拟器上测试该服务。再次按照相同的步骤使用 bmgr 工具测试服务,而不是显示上述消息,实际上调用了 onBackup()(xxx.yyy.zzz 是我的包,XXXXXXXX 是 ApplicationInfo):

在模拟器上卸载并重新安装我的应用程序后,调用了 onRestore(),但是找不到我的应用程序的 MainActivity,因此抛出了 ClassNotFoundException:

有趣的是,如果我在 ClassNotFoundException 之后重新启动我的应用程序,它可以正常工作,包括恢复的共享首选项!

我在 SO 中遇到过类似的问题(例如这里这里),但是它们不属于我的问题的范畴。我认为 Manifest 文件或其他地方的应用程序设置没有问题,因为在 API14 中调用了 onBackup 和 onRestore 方法,并且在 ClassNotFoundException 之后恢复了备份。最后,我想指出我正在使用 API17 (Google Inc) 构建 Eclipse 项目。

对不起,我的帖子很长,但我想尽可能清楚地说明问题。如果有人对为什么在这些不同的 Android 版本中发生这种情况有任何反馈,请告诉我们。

编辑:阅读这篇文章后,我还尝试使用 bmgr 工具中的此命令命令将备份传输更改为所谓的 LocalTransport:

结果是用户共享偏好在我的 Android 2.3.4 Atrix 手机中成功恢复。但是,在 Android 4.0 模拟器中,行为与以前相同,即调用了 onRestore(),引发了相同的 ClassNotFoundException,并且在重新启动应用程序后,我的应用程序可以正常工作并包含用户共享的偏好。所以在上一个问题之上,一个新的问题是为什么“LocalTransport”在 Android 2.3.4 上工作,而在 4.0 上抛出异常(至少在这种情况下)。如果有人可以分享意见,请继续。

EDIT2:好的,这很奇怪。ClassNotFoundException 仅针对我的应用程序中的 MapActivities 引发。更准确地说,我的应用程序从 MapActivity 开始,因此在第一次启动时抛出了 ClassNotFoundException。我所做的是创建一个带有两个按钮的虚拟 Activity 作为启动器 Activity,每个按钮都可以启动我的 MapActivities(在我的应用程序中我总共有 2 个)。现在在这种情况下,出现“找不到类”错误,如以下消息所示:

如您所见,这些错误仅适用于我的 MapActivities,并且仅在恢复过程之后。如果我直接重新启动我的应用程序,一切正常,包括恢复的数据。那么有谁知道为什么仅在 MapActivity 并且仅在还原过程之后才抛出“找不到类”?我应该注意到这仅在 Android 4 上发生。在我的 Android 2.3.4 的 Atrix 手机中,数据恢复工作正常(使用 LocalTransport)。这真的很奇怪...... :-|

EDIT3:当启动器活动是 MapActivity 时,我创建了一个小型 Eclipse 项目来测试备份/恢复服务。它是用谷歌 API17 构建的。你可以从这里下载。我已经在带有 Google API10 的模拟器中测试了这个项目,效果很好。但是,在具有 Google API14 的模拟器中,一旦完成恢复,就会引发 ClassNotFoundException。该项目有一个按钮,可以将您在 EditText 上编写的任何文本保存到用户首选项。所以要测试它:

  1. 在 EditText 中输入文本
  2. 按下按钮保存并退出应用程序
  3. 使用 bmgr 工具强制备份
  4. 卸载应用程序,然后从 Eclipse 重新安装。

调用 onRestore 后,会抛出 ClassNotFoundException。最后,我应该注意,如果您将 MapActivity 替换为简单的 Activivy,则恢复成功。

让我知道是否有人尝试过。顺便说一句,完全相同的问题已经发布在这里,到目前为止还没有答案。这是一个错误吗?是否应该被举报?

EDIT4:作为 EDIT2 的延续,我在其中添加了一个初始虚拟 Activity,在深入研究问题的同时,我发现:如果在恢复后,我只需从我的虚拟 Activity 启动我的 MapActivity,然后抛出 NoClassDefFoundError 并且应用程序崩溃,但在下一次应用启动时工作正常(如前所述)。但是,如果我捕获 NoClassDefFoundError(因此不允许应用程序崩溃),那么即使我重新启动应用程序,也会继续抛出 NoClassDefFoundError!怎么可能?我在 Android 项目中打开了一个问题,你可以在这里找到它。

0 投票
0 回答
117 浏览

android - 如何对备份保密?

我正在按照官方 Android 文档中的说明在我的应用中实施备份。我正在备份的信息可能很敏感,因此我想根据上述文档中的建议对其进行加密:

在使用备份存储敏感数据(例如用户名和密码)时,您应该始终保持谨慎。

加密用户数据的推荐方法,在需要时生成随机密钥并存储它,在备份情况下没有帮助,因为如果我正在恢复备份,生成的密钥可能已经丢失(或者必须包含在备份中)。同样,我不能使用任何设备标识符(例如 IMEI)来生成确定性密钥,因为备份可能会合法地恢复到不同的设备上。

要求用户输入密码来保护密钥可以跨设备工作,但onRestore完全在后台完成。要从用户那里获取密码,我必须将密文保存到存储中,在下次启动我的主要活动时记下,然后提示用户。除了那个 faff,我真的不相信用户会输入一次密码,在恢复发生之前永远不要再次使用它,可能在几年后,然后能够记住它。我不会!然后就没有办法恢复备份了,我还不如根本没有实施备份。

似乎唯一合理的选择是在我的 APK 中存储一个固定密钥,但我确信我不必在这里解释为什么这并不能真正提供任何额外的安全性。如果我只是将机密存储到内部存储中,我会考虑这样做,但是任何可以在设备上安装不可靠的备份传输或非法访问备份服务器的人都不会因为必须反编译或检查应用程序而感到不便。

谁能给我一个更好的选择?

0 投票
3 回答
15673 浏览

android - 使用 adb 备份/恢复?

我想使用adb backup / restore. 我adb restore用来恢复备份。但是我的问题经过一段时间的延迟后,机制恢复停止了。我希望我的恢复不要停止。如果可能的话,它会自动启动,并且不需要对我进行验证。用来adb back up获取我的backup.ab。然后我用adb restore backup.ab

0 投票
2 回答
353 浏览

java - 将数据库备份到 sd 卡

我正在尝试在我的应用程序中创建备份功能,但它会导致强制关闭错误

谁能给我一些想法我的代码有什么问题

请帮帮我

这是我的代码

}

这是我的日志

0 投票
0 回答
934 浏览

android - moveTaskToBack 在不同的 android 操作系统中不起作用


我正在使用 moveTaskToBack 将我的应用程序置于后台。应用程序在 OS 2.2 中运行良好,但是当我在 OS 2.3.6 中测试相同的应用程序时,我遇到了一些奇怪的问题。
如果我将应用程序置于后台,然后再次置于前台,则互联网连接正常,但当应用程序处于前台时,如果我断开互联网连接,将应用程序置于后台,当我再次返回应用程序时,意味着应用程序进入前台我的应用程序调用 onCreate() 并且应用程序崩溃的时间。

代码:

日志猫:
04-08 11:33:53.585: E/AndroidRuntime(29175): FATAL EXCEPTION: main 04-08 11:33:53.585: E/AndroidRuntime(29175): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.snapwork.xmppchatapp/com.snapwork.xmppchatapp.BuddyList}: java.lang.NullPointerException 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.os.Handler.dispatchMessage(Handler.java:99) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.os.Looper.loop(Looper.java:130) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread.main(ActivityThread.java:3687) 04-08 11:33:53.585: E/AndroidRuntime(29175): at java.lang.reflect.Method.invokeNative(Native Method) 04-08 11:33:53.585: E/AndroidRuntime(29175): at java.lang.reflect.Method.invoke(Method.java:507) 04-08 11:33:53.585: E/AndroidRuntime(29175): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 04-08 11:33:53.585: E/AndroidRuntime(29175): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 04-08 11:33:53.585: E/AndroidRuntime(29175): at dalvik.system.NativeStart.main(Native Method) 04-08 11:33:53.585: E/AndroidRuntime(29175): Caused by: java.lang.NullPointerException 04-08 11:33:53.585: E/AndroidRuntime(29175): at com.snapwork.xmppchatapp.BuddyList.onCreate(BuddyList.java:266) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-08 11:33:53.585: E/AndroidRuntime(29175): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 04-08 11:33:53.585: E/AndroidRuntime(29175): ... 11 more 04-08 11:33:53.593: E/liblog(1514): failed to call dumpstate 04-08 11:33:53.593: E/(1514): Dumpstate > /data/log/dumpstate_app_error

0 投票
1 回答
775 浏览

android - Android 10 分钟后应用程序超时

如果用户不使用应用程序 >=10 分钟,我想从我的 Web 服务中超时 mysession。如果用户在此延迟后不使用应用程序,我希望我的会话关闭。我通过以下方式满足它

我这样做是正确的方式还是在android中有一种方法来检查应用程序是否10分钟不活动?