2016-09-21 3 views
0

Моя цель - создать папку на диске пользователя, где он может отбрасывать файлы. Затем мое приложение Android обнаруживает (через опрос), что новый файл был создан/загружен в эту папку на диске и загружен.Google Диск REST/Android API - поиск изменений для папки накопителя

Пока все хорошо. Я попытался сделать это с помощью API Android для Google Диска, но мне было дано понять, что с помощью API Google Диска Android у меня есть только доступ к файлам, созданным моим приложением. Поэтому, если пользователь должен был удалить фотографию в этой папке с помощью другого устройства (например, настольного компьютера), я бы даже не увидел файл, не говоря уже о том, был ли он создан или нет.

Мне сказали, что я могу использовать Google REST API (v3), чтобы извлечь изменения, которые произошли с момента последнего просмотра.

Drive.Changes.List request = drive.changes().list(startPageToken); 
ChangeList changes = request.execute(); 

Это действительно работает. Однако у меня есть три проблемы с этим подходом:

  1. Я получаю список changes, содержащий все файлы, которые были изменены на диске. Я не, однако, получите набор изменений. Я не знаю точно, что изменило. Было ли это переименование, создание, перемещение, удаление, изменение контента? Я googled, и я, кажется, единственный, кто интересуется этим. Как узнать, что именно изменилось?
  2. Как я уже говорил, я хотел бы посмотреть одну папку. Как я могу запросить изменения только для одной папки ?
  3. И наконец: мое приложение использует собственный API Android для Google Диска. Поэтому, добавив эту функцию, мне вдруг понадобится два API, а не один, хотя мне нужен один из них только для простой задачи опроса для изменений. Что еще хуже, так это то, что пользователь мог теоретически входить в один API с одной учетной записью, а другой - с другой учетной записью. Это не имеет никакого смысла. Я получаю много дополнительных накладных расходов и критически важных функций зависит от того, как пользователь вступает в систему с той же учетной записью дважды. Есть ли решение этой проблемы?

Мне очень жаль, что с самого начала можно использовать два API-интерфейсов Google Диска. Вы должны копать совсем немного, чтобы даже начать и узнать точную разницу, если вы ничего не знаете изначально. Я до сих пор не понимаю, почему один из них не способен видеть файлы, которые не созданы сами по себе.

ответ

1

Вы можете попытаться проверить документацию о Listening for Change Events:

Вы можете использовать изменения слушателей получать уведомления, если указанный файл или папка имеет изменения в ее содержание и метаданные. Слушатель изменений реализует интерфейс ChangeListener для ChangeEvent и получает прямой обратный вызов от службы Диска к подключенному в данный момент клиентскому приложению.

Следующий пример кода показывает логику можно реализовать, чтобы добавить изменения слушателя в файл:

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, 
     mSelectedFileId); 
file.addChangeListener(mGoogleApiClient, changeListener); 

В дополнении к добавлению слушателя в файл или папку, которую вы хотите получить событие для вашего приложения также необходимо выполнить обратный вызов (changeListener в этом примере), который вы передали в вызове метода addChangeListener. На следующем рисунке показан обратный вызов, который печатает полученные события в журнале.

/** 
* A listener to handle file change events. 
*/ 
final private ChangeListener changeListener = new ChangeListener() { 
    @Override 
    public void onChange(ChangeEvent event) { 
     mLogTextView.setText(String.format("File change event: %s", event)); 
    } 
}; 

Для обратных вызовов, которые принимают меры, такие, как получение последней версии, вы можете использовать hasContentChanged и hasMetadataChanged методы, чтобы определить, является ли содержимое файла, метаданные, или оба изменились.

Полный рабочий пример см. В примере ListenChangeEventsForFilesActivity в документе Google Drive Android API Demos app.

Дополнительную информацию можно найти в этом вопросе 22980497.

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

+0

С собственным API-интерфейсом Google Диска Я НЕ МОГУ видеть файлы, созданные другими устройствами, что означает, что прослушиватель изменений бесполезен, поскольку он не обнаруживает файлы, сброшенные с помощью настольного клиента. – Marco7757

+0

спасибо за помощь моего чувака –

Смежные вопросы