Ich verwende Google drive API
, um die SQLite
Datei auf meinem AppFolder
zu sichern. Es funktioniert gut. Das Problem ist, dass bei jedem Backup die Speichergröße erhöht wurde. Die ursprüngliche Größe der Backup-Datei war 1KB
, aber wenn ich auf Backup-Schaltfläche klick, wurde jedes Mal die Dateigröße von AppFolder
meiner App-Datei erhöht. Wie überprüft man die Datei existiert oder nicht auf AppFolder
? Wenn vorhanden dann, wie den Speicher meiner App AppFolder
Datei zu löschen, dann sichern Sie nur meine Datei auf AppFolder
. Bitte gab mir eine Lösung. Ich bin von 2 Tagen steckengeblieben, um dieses Problem zu lösen. Aber ich kann nicht ..Wie kann ich die Dateigröße versteckte App-Daten von Google Drive API löschen?
Wo die Suchabfrage hinzufügen, um die Datei zu suchen und diese Datei vor dem Hochladen zu löschen? Ich habe den Code hinzugefügt. Added-Code: bakup Knopf Zuhörer:
backupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Drive.DriveApi.newDriveContents(mGoogleApiClient)
.setResultCallback(driveContentsCallback);
}
});
Dann in seinem Rückruf,
final private ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback = new
ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
return;
}
final DriveContents driveContents = result.getDriveContents();
new Thread() {
@Override
public void run() {
OutputStream outputStream = driveContents.getOutputStream();
FileInputStream inputStream = null;
File file = changeSQLiteToJSON();
try {
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] buf = new byte[1024];
int bytesRead;
try {
if (inputStream != null) {
while ((bytesRead = inputStream.read(buf)) > 0) {
outputStream.write(buf, 0, bytesRead);
}
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (NullPointerException ex) {
ex.printStackTrace();
} finally {
file.delete();
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle(JSON_NAME)
.setMimeType("text/plain")
.setStarred(true).build();
Drive.DriveApi.getAppFolder(mGoogleApiClient)
.createFile(mGoogleApiClient, changeSet, driveContents)
.setResultCallback(fileCallback);
}
}.start();
}
};
FinalCallBack:
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
ResultCallback<DriveFolder.DriveFileResult>() {
@Override
public void onResult(DriveFolder.DriveFileResult result) {
if (!result.getStatus().isSuccess()) {
return;
}
Toast.makeText(getApplicationContext(), "Created a file with content: " + result.getDriveFile().getDriveId(), Toast.LENGTH_SHORT).show();
}
};
Haben Sie zuerst die Datei versucht der Suche die alte löschen nach dem Hochladen der Neue? https://developers.google.com/drive/android/queries – DaImTo
@DaImTo Können Sie mir sagen, wo Sie eine Suchanfrage hinzufügen können, um die Datei zu durchsuchen? Ich habe den Code hinzugefügt. –
Ich bin kein Android-Entwickler so wahrscheinlich nicht die beste Person zu fragen. Persönlich würde ich es tun, nachdem Sie Ihre Datei hochladen überprüfen, ob es mehr als eine ältere löschen. Remember Drive behandelt Dateien mit demselben Namen als verschiedene Dateien. – DaImTo