jeudi 14 janvier 2016

Android Google drive upload database

I found this code to login with a Google account and upload database SQLite. I imported the necessary libraries, but I get error from method OnPostExecute"Error while editing contents" This is the full code and a part of my Database:

SQLiteOpenHelper

public class DbCrypt extends SQLiteOpenHelper {

private static final String DB_NAME = "psw.crypt";
private static final int DB_VERSION = 1;

private static SQLiteDatabase db = null;


public DbCrypt(Context context) {
    super(context, DB_NAME, null, DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db) {
    DbCrypt.db = db;
...
...
}
}

Main

public class Main extends BaseDemoActivity {

private final static String TAG = "gDriveActivity";

@Override
public void onConnected(Bundle connectionHint) {
    super.onConnected(connectionHint);

    // create new contents resource.
    Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(driveContentsCallback);
}


final private ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback =
        new ResultCallback<DriveApi.DriveContentsResult>() {
            @Override
            public void onResult(DriveApi.DriveContentsResult result) {
                if (!result.getStatus().isSuccess()) {
                    //if failure
                    showMessage("Error while trying to create new file contents");
                    return;
                }


                //change the metadata of the file. by setting title, setMimeType.
                String mimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType("crypt");
                MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                        .setTitle("psw")
                        .setMimeType(mimeType)
                        .build();


                Drive.DriveApi.getAppFolder(getGoogleApiClient())
                        .createFile(getGoogleApiClient(), changeSet, result.getDriveContents()).setResultCallback(fileCallBack);

            }

        };


final ResultCallback<DriveFolder.DriveFileResult> fileCallBack = new ResultCallback<DriveFolder.DriveFileResult>() {
    @Override
    public void onResult(DriveFolder.DriveFileResult driveFileResult) {

        if (!driveFileResult.getStatus().isSuccess()) {
            Log.v(TAG, "Error while trying to create the file");
            return;
        }
        //Initialize mFile to be processed in AsyncTask
        DriveFile mfile = driveFileResult.getDriveFile();
        new EditContentsAsyncTask(Main.this).execute(mfile);

    }
};

public class EditContentsAsyncTask extends ApiClientAsyncTask<DriveFile, Void, Boolean> {

    public EditContentsAsyncTask(Context context) {
        super(context);
    }

    @Override
    protected Boolean doInBackgroundConnected(DriveFile... args) {
        DriveFile file = args[0];
        try {

            DriveContentsResult driveContentsResult = file.open(
                    getGoogleApiClient(), DriveFile.MODE_WRITE_ONLY, null).await();


            if (!driveContentsResult.getStatus().isSuccess()) {
                return false;
            }

            DriveContents driveContents = driveContentsResult.getDriveContents();

            java.io.File internalDB = new java.io.File("/data/data/" + getPackageName() + "/databases/psw.crypt");

            FileInputStream is = new FileInputStream(internalDB);
            BufferedInputStream in = new BufferedInputStream(is);
            byte[] buffer = new byte[8 * 1024];

            BufferedOutputStream out = new BufferedOutputStream(driveContents.getOutputStream());
            int n = 0;
            while ((n = in.read(buffer)) > 0) {
                out.write(buffer, 0, n);
            }
            in.close();


            com.google.android.gms.common.api.Status status =
                    driveContents.commit(getGoogleApiClient(), null).await();
            return status.getStatus().isSuccess();
        } catch (IOException e) {
            Log.e(TAG, "IOException while appending to the output stream", e);
        }
        return false;
    }

    @Override
    protected void onPostExecute(Boolean result) {
        if (!result) {
            showMessage("Error while editing contents");
            return;
        }
        showMessage("Successfully edited contents");
    }
}
}

Aucun commentaire:

Enregistrer un commentaire