gpt4 book ai didi

android - 从 Android Market 重新安装时无法让 BackupAgent 工作

转载 作者:行者123 更新时间:2023-11-29 22:20:52 25 4
gpt4 key购买 nike

我已经根据文档实现了 BackupAgentHelper,包括向后兼容 1.6,以备份我所有的 SharedPreferences。在模拟器 Android 2.2 中测试它时以及在我的设备上运行时,它工作得很好,它通过 USB 运行普通的 Android 2.3.3。在这两个测试用例中,我都发出:adb shell bmgr run,这会触发备份。

但是,当我从 Android Market 重新安装我的应用程序时,所有 SharedPreferences 都消失了。文档说在 dataChanged() 被调用之后,“备份管理器会在将来的适当时间调用备份代理的 onBackup() 方法”。很好,但是有人知道是什么让系统真正进行备份吗?我怀疑我的情况不会发生这种情况。

文档说:“如果使用设备,请打开系统设置,选择隐私,然后启用备份我的数据和自动恢复。”但我的设备 (SE Xperia Mini) 中没有该选项。我只能猜测此选项始终处于启用状态并且无法关闭。我使用瑞典的 Telia 作为我的运营商(如果有的话)。

有人知道为什么备份在从 Market 重新安装时不起作用,但在使用模拟器和通过 USB 在设备上时却能正常运行吗?

最佳答案

隐私设置中的备份和恢复设置是特定于供应商的。请参阅取自 Privacy class 的代码 fragment :

    // Vendor specific
if (getPackageManager().resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) {
screen.removePreference(findPreference(BACKUP_CATEGORY));
}

索尼爱立信用其内容替换了条件语句,并无条件地删除了此首选项。

此代码包含在 Apache 许可证 中,因此 SE 不需要为您提供源代码。如果您住在国家/地区,我相信为此目的进行逆向工程是合法的(我不是律师)您可以:

  1. 从您的设备中提取设置包:

    adb pull /system/app/Settings.apk Settings.apk
  2. 使用 apktool 解码 settings.apk :

    apktool d -s Settings.apk
  3. 在新创建的 Settings 目录中,您会找到 classes.dex。要使用 Smali 反编译它(可以在 code.google.com 上找到):

    baksmali classes.dex -o classes
  4. 最后您对classes/com/android/settings/PrivacySettings.smali 感兴趣

您可以对从 Android Emulator 获取的 Settings.apk 执行相同操作并比较这两个文件。

我也有 Xperia mini pro (SK17i),但也没有那个偏好。

关于android - 从 Android Market 重新安装时无法让 BackupAgent 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com