Android: 获取用于恢复的DriveId
Android: Get DriveId for restore
我的应用程序在 Google 驱动器上进行 基于云的备份。备份顺利进行。
我使用以下代码进行备份:
void saveToDrive() {
// Code to upload file
DriveId mDriveId = metadataResult.getMetadata().getDriveId();
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getApplicationContext().getPackageName(), MODE_PRIVATE);
sharedPreferences.edit().putString("DriveId", mDriveId.encodeToString()).apply();
....
}
如您所见,我在备份时将 DriveId
保存到 SharedPreferences
。所以使用 DriveId
,我可以恢复为:
void readFromDrive(DriveId mDriveId) { // DriveId is not available after app reinstall!!
// Code to download file and restore
}
我的恢复操作需要 DriveId
下载备份文件。我想在重新安装应用程序时触发恢复。但是,我无法获得DriveId
以便我可以下载所需的文件。
我该怎么做?拜托,我非常需要帮助。
谢谢。
我首先使用以下代码查询 Google 驱动器的内容解决了这个问题:
public class GDriveQuery extends BaseDemo {
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "field"))
.addFilter(Filters.not(Filters.eq(SearchableField.TRASHED, true)))
.build();
Drive.DriveApi.query(getGoogleApiClient(), query)
.setResultCallback(metadataCallback);
}
final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback =
new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Problem while retrieving results");
return;
}
System.out.println("SUCCESS!!");
MetadataBuffer mdb;
mdb = result.getMetadataBuffer();
for (Metadata md : mdb) {
System.out.println(md.getDriveId().encodeToString());
}
}
};
}
上面的代码返回了 DriveId
。然后使用 DriveId
我使用了上面问题中发布的函数 readFromDrive(driveId)
。
有效!!
感谢大家的帮助。
我的应用程序在 Google 驱动器上进行 基于云的备份。备份顺利进行。
我使用以下代码进行备份:
void saveToDrive() {
// Code to upload file
DriveId mDriveId = metadataResult.getMetadata().getDriveId();
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getApplicationContext().getPackageName(), MODE_PRIVATE);
sharedPreferences.edit().putString("DriveId", mDriveId.encodeToString()).apply();
....
}
如您所见,我在备份时将 DriveId
保存到 SharedPreferences
。所以使用 DriveId
,我可以恢复为:
void readFromDrive(DriveId mDriveId) { // DriveId is not available after app reinstall!!
// Code to download file and restore
}
我的恢复操作需要 DriveId
下载备份文件。我想在重新安装应用程序时触发恢复。但是,我无法获得DriveId
以便我可以下载所需的文件。
我该怎么做?拜托,我非常需要帮助。
谢谢。
我首先使用以下代码查询 Google 驱动器的内容解决了这个问题:
public class GDriveQuery extends BaseDemo {
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "field"))
.addFilter(Filters.not(Filters.eq(SearchableField.TRASHED, true)))
.build();
Drive.DriveApi.query(getGoogleApiClient(), query)
.setResultCallback(metadataCallback);
}
final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback =
new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Problem while retrieving results");
return;
}
System.out.println("SUCCESS!!");
MetadataBuffer mdb;
mdb = result.getMetadataBuffer();
for (Metadata md : mdb) {
System.out.println(md.getDriveId().encodeToString());
}
}
};
}
上面的代码返回了 DriveId
。然后使用 DriveId
我使用了上面问题中发布的函数 readFromDrive(driveId)
。
有效!!
感谢大家的帮助。