movil - Cómo subir un archivo a GoogleDrive en android
cómo subir y compartir archivos en google drive (1)
Tienes dos API diferentes que puedes usar en Android, REST y GDAA .
REST es la API ''barebones'' que le brinda la funcionalidad completa de Google Drive. También tiene un patio de juegos interactivo para probar todo (ver la parte inferior de esta página ). Pero debe gestionar los retrasos, las fallas, etc. de la red usted mismo. Idealmente, delegaría ese trabajo para sincronizar el servicio del adaptador.
GDAA se basa en REST, reside en los Servicios de Google Play y se comporta como una API local con promoción diferida de objetos (carpetas / archivos) a Drive. Tiene una funcionalidad limitada en comparación con REST (olvide el enlace de miniatura, etc.). Esencialmente, hablas con GDAA y con las conversaciones de GDAA con Drive en su propio horario. Por lo tanto, no tiene que preocuparse por situaciones en línea / fuera de línea. Tenga cuidado, esto también puede causar problemas de sincronización, ya que no tiene control directo sobre el tiempo de promoción de objetos. Las demostraciones para GDAA se pueden encontrar aquí y aquí .
También creé una aplicación de demostración CRUD simple que puedes usar. La carga que está solicitando reside en el método create () allí. No está completamente actualizado, ya que GDAA ya implementó la funcionalidad ''basura'' (en Google Play Services 7.00 / Rev. 23).
Buena suerte
Me refiero a este código
AccountManager am = AccountManager.get(activity);
am.getAuthToken(am.getAccounts())[0],
"oauth2:" + DriveScopes.DRIVE,
new Bundle(),
true,
new OnTokenAcquired(),
null);
private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
@Override
public void run(AccountManagerFuture<Bundle> result) {
try {
final String token = result.getResult().getString(AccountManager.KEY_AUTHTOKEN);
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
Drive.Builder b = new Drive.Builder(httpTransport, jsonFactory, null);
b.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JSonHttpRequest request) throws IOException {
DriveRequest driveRequest = (DriveRequest) request;
driveRequest.setPrettyPrint(true);
driveRequest.setKey(CLIENT ID YOU GOT WHEN SETTING UP THE CONSOLE BEFORE YOU STARTED CODING)
driveRequest.setOauthToken(token);
}
});
final Drive drive = b.build();
final com.google.api.services.drive.model.File body = new com.google.api.services.drive.model.File();
body.setTitle("My Test File");
body.setDescription("A Test File");
body.setMimeType("text/plain");
final FileContent mediaContent = new FileContent("text/plain", an ordinary java.io.File you''d like to upload. Make it using a FileWriter or something, that''s really outside the scope of this answer.)
new Thread(new Runnable() {
public void run() {
try {
com.google.api.services.drive.model.File file = drive.files().insert(body, mediaContent).execute();
alreadyTriedAgain = false; // Global boolean to make sure you don''t repeatedly try too many times when the server is down or your code is faulty... they''ll block requests until the next day if you make 10 bad requests, I found.
} catch (IOException e) {
if (!alreadyTriedAgain) {
alreadyTriedAgain = true;
AccountManager am = AccountManager.get(activity);
am.invalidateAuthToken(am.getAccounts()[0].type, null); // Requires the permissions MANAGE_ACCOUNTS & USE_CREDENTIALS in the Manifest
am.getAuthToken (same as before...)
} else {
// Give up. Crash or log an error or whatever you want.
}
}
}
}).start();
Intent launch = (Intent)result.getResult().get(AccountManager.KEY_INTENT);
if (launch != null) {
startActivityForResult(launch, 3025);
return; // Not sure why... I wrote it here for some reason. Might not actually be necessary.
}
} catch (OperationCanceledException e) {
// Handle it...
} catch (AuthenticatorException e) {
// Handle it...
} catch (IOException e) {
// Handle it...
}
}
}
En jsonHttpRequestInitializer me sale un problema. [GoogleClient $ Builder no se puede resolver. Se hace referencia indirectamente desde archivos .class requeridos] por favor sugiérame lo que tengo que hacer ...