Я использую этот кусок кода, чтобы проверить, существует ли файл в диск:Android Drive API - Проверка, если файл существует всегда указывает на не существующие
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "tmp.txt"))
.build();
new MyAsyncTask().execute(query);
class MyAsyncTask extends AsyncTask<Query, Void, MetadataBufferResult>{
@Override
protected MetadataBufferResult doInBackground(Query... params) {
return Drive.DriveApi.query(getGoogleApiClient(), params[0]).await();
}
@Override
protected void onPostExecute(MetadataBufferResult metadataBufferResult) {
if(metadataBufferResult.getMetadataBuffer().getCount()==0)
showMessage("File does not exist");
else
showMessage("File exists");
}
}
Моя логика в принципе использовать запрос для фильтрации выведите все файлы с именем «tmp.txt», а затем проверьте, не считается ли счет возвращаемого таким образом MetaDataBuffer 0. Однако, независимо от того, существует ли файл, счетчик всегда равен 0, и сообщение отображается как «Файл не существует ». Что мне здесь не хватает? Я использую модифицированную версию QueryFilesActivity из Android-демонстрационного мастера, предоставляемого Android.
Такие варианты исключаются, учитывая: 1. Он существует, что проверено с помощью Привода. 2. У приложения есть разрешение на доступ к файлу, и если это не так, было бы сообщено сообщение Toast. 3. Файл был создан несколько месяцев назад, поэтому кеш был очень актуальным. Я очень уверен, что я делаю что-то неправильно, но не знаю, что. Спасибо, в любом случае! – Sriram
Привод Google для Android поддерживает только доступ к области FILE, поэтому при запросе на корпус пользователя приложение будет возвращать только файлы, к которым приложение имеет доступ. Он не возвращает тост или любую ошибку, потому что, если приложение не имеет доступа к файлу, недопустимо раскрывать тот факт, что файл существует. Обратите внимание, что если файл был создан вашим приложением, он автоматически получит к нему доступ. Таким образом, запрос, возвращающий 0 элементов при поиске файла, означает, что файл больше не существует или пользователь явно удалил доступ приложения из файла. – Shailendra