Загрузите файл JSON на Google Диск с помощью API Google Диска для Android программно

Я знаю из пример кода, как загрузить текстовый файл в папку Drive AppFolder, но из документации неясно, как расширить его до JSON, если это вообще возможно.

Вот код для загрузки текстового файла:

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

        // Perform I/O off the UI thread.
        new Thread() {
            @Override
            public void run() {
                // write content to DriveContents
                OutputStream outputStream = driveContents.getOutputStream();
                Writer writer = new OutputStreamWriter(outputStream);
                try {
                    writer.write("Hello World!");
                    writer.close();
                } catch (IOException e) {
                    Log.e(TAG, e.getMessage());
                }

                MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                        .setTitle("New file")
                        .setMimeType("text/plain")
                        .setStarred(true).build();

                // create a file on root folder
                Drive.DriveApi.getRootFolder(getGoogleApiClient())
                        .createFile(getGoogleApiClient(), changeSet, driveContents)
                        .setResultCallback(fileCallback);
            }
        }.start();
    }
};

Мне нужно изменить .setMimeType() и outputStream, но на что именно?

моя строка JSON объявляется следующим образом:

String json = gson.toJson(activeSubs); //activeSubs being an ArrayList

Любая помощь приветствуется.


person Daniele    schedule 16.05.2017    source источник
comment
Почему? Текст Json - это просто текст. Я не вижу имени файла в вашем коде.   -  person greenapps    schedule 16.05.2017
comment
это пример кода из примеров Google. Так что это правильный способ загрузить json? больше ничего делать не надо?   -  person Daniele    schedule 16.05.2017
comment
Я не вижу имени файла в вашем коде. И далее вы можете ответить на свой вопрос, просто попробовав.   -  person greenapps    schedule 16.05.2017
comment
Вы так и не сказали под каким именем файла все будет сохраняться.   -  person greenapps    schedule 16.05.2017
comment
my JSON file is declared as follows:. Нет. Это не файл. Это строка, содержащая текст json.   -  person greenapps    schedule 16.05.2017
comment
Да, это то, что мне нужно, верно? Затем я создаю файл в папке приложений на диске.   -  person Daniele    schedule 16.05.2017
comment
writer.write("Hello World!"); изменить на writer.write(json);   -  person greenapps    schedule 16.05.2017
comment
хорошо сделано, добавьте ответ, и я приму его   -  person Daniele    schedule 16.05.2017


Ответы (1)


Это исправило это для меня:

String json = gson.tojson(activeSubs);

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

        // Perform I/O off the UI thread.
        new Thread() {
            @Override
            public void run() {
                // write content to DriveContents
                OutputStream outputStream = driveContents.getOutputStream();
                Writer writer = new OutputStreamWriter(outputStream);
                try {
                    writer.write(json);
                    writer.close();
                } catch (IOException e) {
                    Log.e(TAG, e.getMessage());
                }

                MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                        .setTitle("New file.txt")
                        .setMimeType("json")
                        .setStarred(true).build();

                // create a file on root folder
                Drive.DriveApi.getRootFolder(getGoogleApiClient())
                        .createFile(getGoogleApiClient(), changeSet, driveContents)
                        .setResultCallback(fileCallback);
            }
        }.start();
    }
};
person Daniele    schedule 18.05.2017