使用android版Google Drive API以编程方式将JSON文件上载到Google Drive

使用android版Google Drive API以编程方式将JSON文件上载到Google Drive,android,json,google-drive-android-api,Android,Json,Google Drive Android Api,我知道如何将文本文件上传到驱动器AppFolder,但从文档中不清楚如何将其扩展到JSON,如果可能的话 以下是上载文本文件的代码: final private ResultCallback<DriveContentsResult> driveContentsCallback = new ResultCallback<DriveContentsResult>() { @Override public void onResult(DriveC

我知道如何将文本文件上传到驱动器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();
    }
};
非常感谢您的帮助。

这为我解决了问题:

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();
    }
};
stringjson=gson.tojson(activeSubs);
最终私有结果回调驱动器contentscallback=new
ResultCallback(){
@凌驾
public void onResult(DriveContentsResult结果){
如果(!result.getStatus().issucess()){
showMessage(“尝试创建新文件内容时出错”);
返回;
}
final DriveContents DriveContents=result.getDriveContents();
//在UI线程外执行I/O。
新线程(){
@凌驾
公开募捐{
//将内容写入驱动器内容
OutputStream OutputStream=driveContents.getOutputStream();
Writer Writer=新的OutputStreamWriter(outputStream);
试一试{
write.write(json);
writer.close();
}捕获(IOE异常){
Log.e(标记,e.getMessage());
}
MetadataChangeSet changeSet=新建MetadataChangeSet.Builder()
.setTitle(“New file.txt”)
.setMimeType(“json”)
.setStarred(true).build();
//在根文件夹上创建文件
Drive.DriveApi.getRootFolder(getGoogleAppClient())
.createFile(GetGoogleAppClient(),变更集,驱动内容)
.setResultCallback(文件回调);
}
}.start();
}
};

为什么?Json文本就是文本。我在你的代码中没有看到任何文件名。这是谷歌示例中的示例代码。那么这也是上传json的正确方式吗?不需要做其他事情吗?我在代码中看不到文件名。此外,您可以通过试一试来回答您自己的问题。您仍然没有告诉所有文件将保存在哪个文件名下。
我的JSON文件声明如下:
。不,那不是文件。它是一个包含json文本的字符串。
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();
    }
};