2011-08-06 2 views
2

Google은 안드로이드 앱을 사용하여 데이터를 Google 백업으로 백업하는 방법을 연구하고 따라했습니다. 따라서 사용자가 전화를 잃거나 새 휴대폰으로 업그레이드하는 경우 잃지 않습니다. 그들의 데이터. 그러나, 내가 그것을 테스트 할 때 (응용 프로그램을 직접 사용하여 제거하고 다시 설치하면) 데이터가 복원되지 않습니다. 여기 제가 한 일이 있습니다. 아마도 누군가가 무엇이 잘못되었는지 알 수 있습니다. (나는 내 ​​응용 프로그램 패키지 이름을 사용 나는 키 값을 추가 한 키의 장소 및 여기서 packageName에 대한) 매니페스트 파일에서 다음 코드를 배치 구글 공유 된 환경 설정을 Google 백업 서비스에 안드로이드로 백업하지 못합니다.

  • 에서 백업 키

    android:backupAgent="packageName.MyPrefsBackup"> 
    <meta-data android:name="com.google.android.backup.api_key" android:value="key" />  
    
  • 에 대한

    1. 적용
    2. 다음 코드를 사용하여 MyPrefsBackup 클래스를 생성했습니다. 백업하려는 sharedpreference 파일의 이름을 UserDB라고합니다. 까지 PREFS_BACKIP_KEY, 난 그냥 prefs라고. 내가 아는 바로는 매니페스트 파일에있는 키와 같은 키가 아닙니다.

    코드 :

    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. 내가

    2. 가 마지막으로 내 메인 프로그램에서 나는 backupHelper 때 전화

    3. 다음 단계에서 백업 관리자를 호출 내 메인 클래스에 추가 BackupManager mBackupManager = new BackupManager(this); 데이터는 다음 줄로 변경됩니다.

      mBackupManager.dataChanged(); 
      

    모든 도움을 주시면 감사하겠습니다.

    답변

    1

    새로운 BackupManager (이) .dataChanged 시도()

    +0

    감사를 실행 bmgr ADB 쉘을 실행 한 후 호출되어 있는지를 디버깅 할 수 있습니다, 내가 몇 일 동안 시도하고 있는지 다시보고 있음을주지 수 bmgr 그것은 작동합니다. 나는 위에 스크립트를 추가하는 것을 잊어 버렸습니다. BackupManager mBackupManager = new BackupManager (this); 내 주요 애플 리케이션의 변수 선언 섹션에. – gbotha

    +0

    그래도 여전히 작동하지 않습니다. 시장에서 응용 프로그램을 설치 한 다음 dataChanged() 명령을 호출하는 데이터베이스를 편집하여 테스트합니다. 그런 다음 2-3 일 정도 기다렸다가 앱을 제거한 다음 다시 설치합니다. 다시 설치하면 데이터베이스를 다시로드하라는 메시지가 표시되지 않습니다. 실망스럽고 ... 누군가로부터 도움이 더 필요 하신가요? – gbotha

    +0

    SharedPrefs 만 백업합니다. 데이터베이스와 파일을 백업하지 않았습니다. 그것이 내가 생각하는 문제이다. – tasomaniac

    0

    당신이 AVD에서이 문제를 테스트하는 경우 - 백업을 사용하도록 설정해야합니다 - AVD은 기본적으로 백업을 사용할 수 없습니다. ADB 쉘은 사실 그런 다음

    실제로에서 onCreate가

    관련 문제