К сожалению (AFAIK), не существует эквивалента getQuotaBytesTotal(), getQuotaBytesUsed()
в GDAA.
Итак, единственный способ получить эту информацию (и другие функции нет - например, thumbnails
, ...) - добавить REST Api. Тем не менее, убедитесь, что вы тщательно используете этот микс, вы можете столкнуться с множеством проблем с задержкой/временем.
Есть несколько предпосылок для достижения этого:
1/убедитесь, что вы включили следующие банки в вашем проекте:
compile 'com.google.apis:google-api-services-drive:v2-rev105-1.17.0-rc'
compile 'com.google.http-client:google-http-client-gson:1.20.0'
compile 'com.google.api-client:google-api-client-android:1.20.0'
...
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.json.gson.GsonFactory;
2/вам потребуется дополнительное разрешение в манифесте :
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
3/Вы должны получить com.google.api.services.drive.Drive
службу и запросить его после onConnected()
обратного вызова GDAA, как и так:
private static GoogleApiClient mGAC;
private static com.google.api.services.drive.Drive mGooSvc;
static boolean init(Activity context) {
if (context != null) try {
mGooSvc = new com.google.api.services.drive.Drive.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
GoogleAccountCredential.usingOAuth2(
context.getApplicationContext(),
Collections.singletonList(com.google.api.services.drive.DriveScopes.DRIVE_FILE)
)
).build();
mGAC = new GoogleApiClient.Builder(context)
.addApi(Drive.API)
// ... additional APIs
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnected(Bundle bundle) {
new Thread(new Runnable() {
@Override
public void run() {
try {
com.google.api.services.drive.model.About about = mGooSvc.about().get().execute();
System.out.println("Total quota (bytes): " + about.getQuotaBytesTotal());
System.out.println("Used quota (bytes): " + about.getQuotaBytesUsed());
} catch (Exception e) { e.printStackTrace(); }
//} catch (UserRecoverableAuthIOException uraIOEx) {
// // standard authorization failure - user fixable
//} catch (GoogleAuthIOException gaIOEx) {
// // usually PackageName /SHA1 mismatch in DevConsole
//} catch (IOException e) {
// if (e instanceof GoogleJsonResponseException) {
// if (404 == ((GoogleJsonResponseException) e).getStatusCode()) {
// // '404 not found' in FILE scope, consider connected
// }
// }
//} catch (Exception e) {
// // "the name must not be empty" indicate
// // UNREGISTERED/EMPTY account in 'setSelectedAccountName()' above
//}
}
}).start();
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult rslt) {
// perform standard authorization dance
}
})
.build();
mGAC.connect();
return true;
} catch (Exception e) {e.printStackTrace();}
return false;
}
Обратите внимание, что я закомментирована обработку для execute()
метода Реста ошибки/авторизации. Это связано с тем, что connect()/onConnected()/onConnectionFailed()
GDAA обрабатывает авторизацию уже (если области идентичны).
Good Luck
Я нашел этот пример кода в [документации] (https://developers.google.com/drive/v2/reference/about/get#examples), который использует 'about.getQuotaBytesUsed() 'и' about.getQuotaBytesTotal() '. Я думаю, что это то, что вы ищете. Кроме того, вы всегда можете посмотреть размер квоты/оставшегося размера в консоли разработчика вручную. – gerardnimo