Поскольку API-интерфейс Google Drive Android устарел, я перешел на API-интерфейс REST Google Drive.
В моей отладочной сборке все работает нормально.
Папки и файлы создаются в корневой папке.или скрытое "appDataFolder".
Но как только я создаю подписанный APK , он больше не работает.
Вход в систему и запрос на разрешение работает.
Но если яхочу создать папку или файл. Я не получаю обратно идентификатор файла.
И всегда в корне Google Диска (независимо от того, использую я appDataFolder или нет), создается файл с именем «Без названия» с 0 КБ.
После нескольких часов поиска я не могу найти причину, по которой он не работает в подписанном APK.
Создание входа в области:
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(DriveScopes.DRIVE_APPDATA), new Scope(DriveScopes.DRIVE_FILE))
.build();
return GoogleSignIn.getClient(context, signInOptions);
GoogleAccountCredential:
// Use the authenticated account ot sign in to the Drive service
List<String> scopes = new ArrayList<>(2);
scopes.add(DriveScopes.DRIVE_FILE);
scopes.add(DriveScopes.DRIVE_APPDATA);
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(context, scopes);
credential.setSelectedAccount(googleSignInAccount.getAccount());
Drive googleDriveService = new Drive.Builder(AndroidHttp.newCompatibleTransport(),
new GsonFactory(), credential)
.setApplicationName("Test Application")
.build();
Создание папки:
File fileMetadata = new File();
fileMetadata.setName("Testfolder");
// Add parent folder
fileMetadata.setParents(Collections.singletonList("appDataFolder"));
fileMetadata.setMimeType("application/vnd.google-apps.folder");
File file;
try {
file = mDriveService.files().create(fileMetadata)
.setFields("id")
.execute();
} catch (IOException e) {
Log.e(TAG, "Can't create folder " + folderName, e);
return "";
}
Log.i(TAG, "Folder " + folderName + " ID: " + file.getId());
return file.getId();