Data Backup에 설명 된대로 BackupAgent를 구현하고 API 키를 등록하고 My Manifest에 BackupAgent를 선언했습니다. 백업 부분 작업은 꽤 잘되어 있습니다. 내가 명령 줄에서 adb shell bmgr run
을 실행하면 다음과 같은 출력은 로그 캣에 나타납니다BackupAgent : "패키지를 복원 할 수 없습니다 ..."
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 [email protected]
01-11 22:23:09.032: DEBUG/BackupHelperDispatcher(9122): handling existing helper 'alarms' [email protected]
01-11 22:23:09.032: DEBUG/BackupHelperDispatcher(9122): handling existing helper 'prefs' [email protected]
01-11 22:23:09.032: VERBOSE/LocalTransport(97): performBackup() pkg=com.meins.nightclock
01-11 22:23:09.032: VERBOSE/LocalTransport(97): Got change set key=alarms:alarms size=16 key64=YWxhcm1zOmFsYXJtcw==
01-11 22:23:09.042: VERBOSE/LocalTransport(97): data size 16
01-11 22:23:09.062: VERBOSE/LocalTransport(97): Got change set key=prefs:com.meins.nightclock_preferences size=265 key64=cHJlZnM6Y29tLm1laW5zLm5pZ2h0Y2xvY2tfcHJlZmVyZW5jZXM=
01-11 22:23:09.072: VERBOSE/LocalTransport(97): data size 265
01-11 22:23:09.072: VERBOSE/LocalTransport(97): finishBackup()
가 호출되지 않습니다 onReceive()
방법에 전혀 작동하지 않는 반면에 일부를 복원 할 수 있습니다. 내 앱 (?)를 BackupAgent을 참조 할 수있는 유일한 출력을 다시 설치하면 나는 단순히 Unable to restore package com.meins.nightclock
을 주장 adb shell bmgr restore com.meins.nightclock
을 실행하면
01-11 22:14:01.042: DEBUG/vending(7426): [100] LocalAssetCache.updateOnePackage(): No local info for com.meins.nightclock
입니다. BackupManager 인 이유,
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true"
android:backupAgent="MyBackupAgent">
<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAI4MsUOC-[...]" />
...
</application>
이
이
사람이 알고 있나요 :
나는 완벽하게하기 위해 관련 매니페스트 부분을 BackupAgentHelper
package com.meins.nightclock;
import java.io.IOException;
import android.app.backup.BackupAgentHelper;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.app.backup.FileBackupHelper;
import android.app.backup.SharedPreferencesBackupHelper;
import android.os.ParcelFileDescriptor;
import android.util.Log;
public class MyBackupAgent extends BackupAgentHelper {
public static final Object[] DATA_LOCK = new Object[0];
private static final String PREFS_BACKUP_KEY = "prefs";
private static final String ALARMS_BACKUP_KEY = "alarms";
private DataLayerAlarms d;
@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
ParcelFileDescriptor newState) throws IOException {
if (d.backup() != 0)
return;
synchronized (DATA_LOCK) {
super.onBackup(oldState, data, newState);
}
}
@Override
public void onCreate() {
SharedPreferencesBackupHelper preferencesHelper = new SharedPreferencesBackupHelper(this,
getPackageName() + "_preferences");
addHelper(PREFS_BACKUP_KEY, preferencesHelper);
FileBackupHelper fileHelper = new FileBackupHelper(this, DataLayerAlarms.BACKUP_FILE);
addHelper(ALARMS_BACKUP_KEY, fileHelper);
d = new DataLayerAlarms(this);
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
throws IOException {
Log.d(toString(), "onRestore()");
synchronized (DATA_LOCK) {
super.onRestore(data, appVersionCode, newState);
}
d.restore();
}
}
의 다음 구현을 사용하고 있습니다 이 패키지를 복원 할 수 없습니까?
나는 똑같은 것을 얻고 있습니다. 나는 그것이 작동하는 것을 보았다.하지만 갑자기 더 이상 일하지 않는다. – slott
나도. 그것은 작동하고 갑자기 작동을 멈췄습니다. 굉장히 좋아 .. – coolcool1994