使用android版Google Drive API以编程方式将JSON文件上载到Google Drive
我知道如何将文本文件上传到驱动器AppFolder,但从文档中不清楚如何将其扩展到JSON,如果可能的话 以下是上载文本文件的代码:使用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
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();
}
};