Android Google Drive发送/创建Fiile

时间:2017-05-10 08:18:35

标签: java android file google-drive-api

有人可以向我展示如何将文件从Android手机发送到Google云端硬盘的简短示例吗?

或创建包含内容的新文件并发送到云端硬盘。

www网站上的Google示例代码有错误,或来自新API,但使用旧API的示例应用程序..

Google示例:

File fileMetadata = new File();
fileMetadata.setTitle("photo.jpg");
java.io.File filePath = new java.io.File("files/photo.jpg");
FileContent mediaContent = new FileContent("image/jpeg", filePath);
File file = driveService.files().insert(fileMetadata, mediaContent)
        .setFields("id")
        .execute();

但是setTitle()和insert()等方法不存在?

我的代码:

  HttpTransport transport = AndroidHttp.newCompatibleTransport();
            JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
            mService = new com.google.api.services.drive.Drive.Builder(
                    transport, jsonFactory, credential)
                    .setApplicationName("Drive API Android Quickstart")
                    .build();

mService.files().create(new File().setName("TITLE").setMimeType("text/csv")).execute();

此创建文件名称为TITLE且正确的MimeType。

但是如何发送普通的java.io.File或如何为drive.model.File创建内容?

3 个答案:

答案 0 :(得分:1)

您的代码段已关闭,但它与Google's example之间存在一些差异:

File fileMetadata = new File();
fileMetadata.setName("config.json");
fileMetadata.setParents(Collections.singletonList("appDataFolder"));
java.io.File filePath = new java.io.File("files/config.json");
FileContent mediaContent = new FileContent("application/json", filePath);
File file = driveService.files().create(fileMetadata, mediaContent)
    .setFields("id")
    .execute();
  • 使用setName代替setTitle
  • 将文件的父级设置为appDataFolder
  • 使用driveService.files().create代替driveService.files().insert

答案 1 :(得分:0)

在您的设备上安装Google云端硬盘应用。我想你已经拥有了。

之后使用Intent.ACTION_OPEN_DOCUMENT让用户从驱动器中选择一个文件然后可以读写。

或者使用Intent.ACTION_CREATE_DOCUMENT让用户在您可以将文件复制到的驱动器上创建文件名。

答案 2 :(得分:0)

您需要添加

    implementation 'com.google.apis:google-api-services-drive:v3-rev20191108-1.30.3'

在您的Gradle中。然后在您的课程中

import com.google.api.services.drive.model.File;