2016-06-27 1 views
1

В моем приложении я подключиться к Google Api:Google Drive Android API: не может найти файл с помощью запроса

mGoogleApiClient = new GoogleApiClient.Builder(this) 
    .addApi(Drive.API) 
    .addScope(Drive.SCOPE_FILE) 
    .addScope(Drive.SCOPE_APPFOLDER) 
    .addConnectionCallbacks(mGDriveCallback) 
    .addOnConnectionFailedListener(mGDriveCallback) 
    .build(); 
mGoogleApiClient.connect(); 

Тогда в onConnected функции mGDriveCallback я сделать запрос на запрос:

Query query = new Query.Builder() 
    .addFilter(Filters.eq(SearchableField.TITLE, "buffer.txt")) 
    .build(); 
Drive.DriveApi.query(mGoogleApiClient, query).setResultCallback(mFindFileCallback); 

И в onResult из mFindFileCallback проверить результат:

if (!result.getStatus().isSuccess()) { 
    Log.w(TAG, "Problem while retrieving files"); 
} else { 
    Log.i(TAG, "Results size: " + result.getMetadataBuffer().getCount()); 
    if (result.getMetadataBuffer().getCount() > 0) { 
     Metadata md = result.getMetadataBuffer().get(0); 
     Log.i(TAG, "DriveId: " + md.getDriveId()); 
    } else { 
     Log.w(TAG, "File not found"); 
    } 
} 

Теперь, несмотря на то, что я лично загрузил «buffer.txt» на свой диск, я получаю метабаффер с пустым результатом. Таким образом, код показывает предупреждение «Файл не найден». То же самое происходит, если я пытаюсь найти папку. Я попытался заменить Filters.eq на Filters.contains, но безуспешно.

Любые идеи, что я делаю что-то неправильно?

+0

Когда вы создали файл, вы установите заголовок «buffer.txt» явно? – Anatoli

+0

Я загрузил файл, а затем попробовал переименовать его - без успеха. Я создал папку - не могу ее получить. – alex

+0

Был ли файл загружен на диск вашим приложением? Или вы загрузили файл каким-либо другим способом (например, веб-интерфейс диска или приложение для Android и Android)? – Anatoli

ответ

0

Основано на Official Google Documentation, когда вы столкнулись с ошибкой File not found, означает, что пользователь не имеет доступа для чтения к файлу или файл не существует.

{ 
"error": { 
"errors": [ 
{ 
"domain": "global", 
"reason": "notFound", 
"message": "File not found {fileId}" 
} 
], 
"code": 404, 
"message": "File not found: {fileId}" 
} 
} 

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

Примечание: Убедитесь, что вы предоставляете правильный access_token при принятии GET запроса метаданных файла.

Вот родственный SO билет: Drive API for Android unable to access the file created by same App

+0

Я совершенно не знаком с Android, и я не уверен, что я понимаю, что соединение «Файл не найден» с моей ошибкой. По сути, я пытаюсь получить DriveId файла на основе его имени. Этот файл был создан мной, и я получаю доступ к нему из приложения, используя свою собственную учетную запись google. Тем не менее, запрос не возвращает файлов. Вы предлагаете, чтобы из моего приложения у меня не было доступа к моим собственным файлам Gdrive, хотя аутентификация не возвращала никаких ошибок? – alex

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