загружать файл в Google Drive? - PullRequest
0 голосов
/ 24 мая 2018

Я следовал этой документации для загрузки файлов на Google Диск: https://developers.google.com/drive/android/files
Теперь каждый раз, когда я хочу загрузить файл, появляется всплывающее окно с Google Диска, спрашивающее, где его загрузить и с помощью которогоназвание.Я не хочу это всплывающее окно, я хочу загрузить непосредственно файл.
Есть ли способ сделать это?Я не могу найти что-нибудь в документах.Я тоже это нашел: https://developers.google.com/drive/api/v3/integrate-create, но я не знаю, смогу ли я его использовать.Можете ли вы дать мне несколько советов?

РЕДАКТИРОВАТЬ:
Это мой build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.google.com' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 Ответ

0 голосов
/ 25 мая 2018

Этого можно добиться с помощью 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 Диск без отображения диалогового окна выбора и без взаимодействия с пользователем.

Здесь у вас естьнемного документации .

Надеюсь, это поможет.

...