2011-08-06 53 views
2

我已经研究并遵循如何让我的Android应用程序备份数据到谷歌备份,所以如果用户失去电话或升级到新手机,他们不会失去他们的数据。但是,当我测试(通过自己使用该应用程序,然后卸载并重新安装)时,不会恢复任何数据。这是我所做的。也许有人可以弄清楚什么是错的。Android备份的共享首选项到谷歌备份服务不起作用

  1. 应用从谷歌
  2. 以下清单文件的代码(在地方关键我没有添加键值的和的packageName我用我的应用程序包名称)的备用钥匙放在

    android:backupAgent="packageName.MyPrefsBackup"> 
    <meta-data android:name="com.google.android.backup.api_key" android:value="key" />  
    
  3. 用以下代码创建类别MyPrefsBackup。我想要备份的sharedpreference文件的名称称为UserDB。至于PREFS_BACKIP_KEY,我只是把它称为首选项。根据我的理解,这与清单文件中的密钥不同。

代码:

package packageName; 

import android.app.backup.BackupAgentHelper; 

import android.app.backup.SharedPreferencesBackupHelper; 

public class MyPrefsBackup extends BackupAgentHelper { 

    // The name of the SharedPreferences file 

    static final String PREFS = "UserDB"; 

    // 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 

    public void onCreate() { 

     SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS); 
     addHelper(PREFS_BACKUP_KEY, helper); 


    } 
} 
  1. 新增BackupManager mBackupManager = new BackupManager(this);在我的主类,我调用备份管理器中的下一个步骤

  2. 最后,在我的主程序我叫backupHelper时数据由以下行改变:

    mBackupManager.dataChanged(); 
    

任何帮助,非常感谢。

回答

1

尝试新BackupManager(本).dataChanged()

+0

感谢亚行外壳后叫,我就给如果这几天一试,并报告有用。我忘了添加上面,我有脚本BackupManager mBackupManager =新的BackupManager(这);在我的主应用程序的变量声明部分。 – gbotha

+0

所以,这仍然不起作用。我通过从市场上安装应用程序进行测试,然后编辑调用dataChanged()命令的数据库。然后我等待大约2-3天,卸载应用程序并重新安装。重新安装后,我不会提示重新加载数据库。令人沮丧......任何人的进一步帮助? – gbotha

+0

您只备份SharedPrefs。您没有备份数据库和文件。这是我猜的问题。 – tasomaniac

0

如果从AVD测试这一点 - 你需要启用备份 - AVD是在默认情况下禁用备份。 亚行外壳BMGR实现真正

然后你其实可以调试它,看看是否的onCreate运行 BMGR运行

相关问题