Этого можно добиться с помощью Google Drive REST API для Android (он напрямую использует Google Drive API) вместо использования Google Drive SDK для Android.
Прежде всего, вам нужно войти в GoogleДиск, выбрав учетную запись Google устройства.Я думаю, вы сделали это, потому что в Google Drive SDK также необходимо войти в систему.Для входа в систему я использую эту зависимость.
compile 'com.google.android.gms:play-services-auth:10.2.0'
Затем, чтобы загрузить файл (создав его в REST API), выполните следующие действия.
Сначала импортируйте зависимости Google Drive REST APIдля Android:
compile('com.google.api-client:google-api-client-android:1.22.0') {
exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-drive:v3-rev75-1.22.0') {
exclude group: 'org.apache.httpcomponents'
}
Во-вторых, создайте объект службы для соединения с API:
private Drive createService(Context context) {
GoogleAccountCredential mCredential = GoogleAccountCredential.usingOAuth2(context.getApplicationContext(), Arrays.asList(new String[]{DriveScopes.DRIVE})).setBackOff(new ExponentialBackOff());
mCredential.setSelectedAccountName("your_logged_account_name");
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
mService = new com.google.api.services.drive.Drive.Builder(
transport, jsonFactory, mCredential)
.setApplicationName(context.getString(R.string.app_name))
.build();
return mService;
}
Впоследствии, когда вы вошли в систему и у вас есть экземпляр Drive (служба), вы можете создать файл:
public void uploadFile(java.io.File fileContent) {
try {
com.google.api.services.drive.model.File file = new com.google.api.services.drive.model.File();
file.setName("filen_ame");
List<String> parents = new ArrayList<>(1);
parents.add("parent_folder_id"); // Here you need to get the parent folder id
file.setParents(parents);
FileContent mediaContent = new FileContent("your_file_mime_type", fileContent);
mService.files().create(file, mediaContent).setFields("id").execute();
Log.d(TAG, "File uploaded");
} catch (IOException e) {
Log.e(TAG, "Error uploading file: ", e);
e.printStackTrace();
}
}
Обратите внимание, что я использовал полное имя класса, чтобы отличить файл Java от файла накопителя.
Также обратите внимание, что этот вызов является синхронным, поэтому вы должны вызывать его не-UiThread.
Этот метод позволяет создавать и загружать файлы на Google Диск без отображения диалогового окна выбора и без взаимодействия с пользователем.
Здесь у вас естьнемного документации .
Надеюсь, это поможет.