Убери из этой статьи
В этой статье вы узнаете, как получить доступ к данным на пользовательском диске Google через API Google Диска. Сначала мы начнем с доступа к существующим файлам на диске, затем продолжим загрузку нового файла и, наконец, как загрузить файл с диска.
Введение
В эту современную эпоху практически все приложения для Android нуждаются в каком-то хранилище, в котором они могут хранить данные, относящиеся к пользователям. С ростом паранойи безопасности пользователи больше не доверяют удаленным серверам. С другой стороны, быстрое распространение использования Интернета вынуждает компании увеличивать объемы хранения, что не идеально для каждой компании.
Возьмем, к примеру, Whatsapp: резервные копии всех ваших чатов будут сохраняться на вашем диске Google через определенные промежутки времени. Это позволяет пользователям хранить личные данные чата при себе и избегать таких компаний, как Whatsapp, которые занимаются пространством для хранения.
Я черпал вдохновение из WhatsApp в том, как они использовали существующее пространство для хранения, и решил одну из основных проблем в бизнес-модели. Это WIN-WIN как для WhatsApp, так и для его пользователей. Поэтому я решил интегрировать Google Диск в одно из моих следующих приложений для управления пользовательскими данными.
Эта статья представляет собой заметку разработчика о том, что я узнал, когда исследовал, как интегрировать Google Drive API в приложения для Android.
Предпосылки
Пользователь должен пройти аутентификацию через Google Sing-in. Я написал подробную статью об этом, пожалуйста, прочтите ее и убедитесь, что пользователь вошел в систему, прежде чем идти дальше.
Имея немного знаний о Kotlin Coroutiens, мы используем область сопрограмм для безопасного выполнения операций с диском, а также для упрощения части кодирования. Если вы новичок в сопрограммах, я рекомендую вам перейти по следующим ссылкам.
Добавьте Интернет-разрешение в файл манифеста на уровне приложения.
<uses-permission android:name="android.permission.INTERNET" />
Интеграция
Теперь, когда мы закончили с аутентификацией Google, следующей частью является интеграция Google Drive API. Добавьте следующие строки в узел зависимостей внутри файла gradle уровня приложения:
Создать экземпляр Google Диска
Диск - это класс в API Google Диска, расширенный на AbstractGoogleJsonClient
. Он используется для управления файлами на Диске, включая загрузку, скачивание, поиск, обнаружение изменений и обновление разрешений на общий доступ. По сути, это точка входа для разработчиков в пользовательский диск Google.
Этот сервис Диска использует DriveRequestInitializer
и его конструктор для инициализации необходимых параметров. Ниже приведены шаги по созданию экземпляра Диска с помощью его построителя:
Шаг 1
Нам нужна учетная запись Google, которая аутентифицируется через ваше приложение для Android. Вы можете получить последний подписанный аккаунт с помощью функции getLastSignedInAccount
в GoogleSignIn
. Взгляни:
GoogleSignIn.getLastSignedInAccount(this)?.let { googleAccount -> }
Шаг 2
Теперь нам нужно создать GoogleAccountCredential
для аутентификации зарегистрированной учетной записи с разрешением DRIVE_FILE
для доступа к содержимому диска пользователя Google.
val credential = GoogleAccountCredential.usingOAuth2( this, listOf(DriveScopes.DRIVE_FILE) ) credential.selectedAccount = googleAccount.account!!
Шаг 3
Наконец, нам нужно создать экземпляр службы Drive
через его построитель, где нужно передать AndroidHttp
, JacksonFactory
и GoogleAccountCredential
в качестве параметров. Взгляни:
val drive = Drive .Builder( AndroidHttp.newCompatibleTransport(), JacksonFactory.getDefaultInstance(), credential ) .setApplicationName(getString(R.string.app_name)) .build()
Когда мы соберем все шаги вместе, у нас будет функция, которая возвращает экземпляр Drive. Взгляни:
Доступ к содержимому на Google Диске
Нет, мы аутентифицировали экземпляр диска, давайте начнем с доступа к существующим файлам на пользовательском диске Google. Внутри класса диска у нас есть функция под названием files()
- средство доступа для создания запросов из коллекции файлов.
В основном здесь мы можем использовать три параметра:
spaces
- Список пробелов, разделенных запятыми, для запроса в корпусе. Поддерживаемые значения:drive
,appDataFolder
иphotos
. Здесь мы используемdrive
.fields
- Необходимая информация о каждом файле, такая как идентификатор, имя и т. д.q
- Запрос для фильтрации результатов файла. См. Информацию о поддерживаемом синтаксисе в руководстве «Поиск файлов».
Ниже приведен фрагмент кода для доступа ко всем файлам на диске. Взгляни:
Чтобы кратко объяснить функцию, сначала мы получаем экземпляр класса Drive
из getDriveService
function. Затем запустил область сопрограммы для выполнения асинхронной операции для получения файлов на диске с помощью функции файлов. В журнале теперь вы можете видеть имена и идентификаторы файлов дисков.
Загрузите файл на Google диск
Пришло время загрузить ваш первый файл на Google Диск. Это включает в себя несколько шагов, посмотрите:
Шаг 1
Сначала создайте экземпляр файла, который вы хотите обновить, из локальной среды хранения. Взгляни:
val localFileDirectory = File( getExternalFilesDir("backup")!!.toURI()) val actualFfile = File("${localFileDirectory}/$FILE_NAME_BACKUPP")
Шаг 2
Создайте файл на диске Google и задайте имя файла с фактическим именем файла. Взгляни:
val gfile = com.google.api.services.drive.model.File() gfile.name = actualFfile.name
Шаг 3
Теперь нам нужно создать экземпляр FileContent
с содержимым и mime-типом фактического файла. Взгляни:
val fileContent = FileContent("text/plain", actualFfile)
Шаг 4
Теперь загрузите gfile
и fileContent
в привод.
googleDriveService.Files().create(gfile,fileContent).execute()
Когда мы соберем все шаги вместе, у вас будет функция, которая будет загружать файлы на диск.
Скачать файл с гугл диска
Подобно функциям создания и доступа, сначала мы получим экземпляр диска из getDriveService
функции, а затем воспользуемся функцией get для загрузки файла. Здесь нам нужно передать id файла, который вы хотите скачать. Взгляни:
Бонус
Чтобы узнать больше о расширенной разработке Android, прочтите следующие статьи:
- « Вопросы и ответы на собеседовании по Android - Часть 1 »
- « 8 распространенных ошибок в разработке под Android »
- « Как интегрировать Google Pay в существующее приложение для Android »
Недавно я наткнулся на эту отличную статью, опубликованную Satya Pavan Kantamani о покупках в приложении в Android, очень рекомендую:
На этом пока все, надеюсь, вы узнали что-то полезное, спасибо за чтение.