Los datos de intención son nulos onactivityresult después de seleccionar la cuenta en google drive api en android

A continuación se muestra mi código:

BaseDemoActivity:

public abstract class BaseDemoActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String TAG = "BaseDriveActivity"; /** * DriveId of an existing folder to be used as a parent folder in * folder operations samples. */ public static String EXISTING_FOLDER_ID = "CAESHDBCMlBoNlZTdkpaR2FTRTFaWW5wclNXRlFabXMYOiCWqeuO-FI="; /** * DriveId of an existing file to be used in file operation samples.. */ public static final String EXISTING_FILE_ID = "CAESHDBCMlBoNlZTdkpaR2FTRTFaWW5wclNXRlFabXMYOiCWqeuO-FI="; /** * Extra for account name. */ protected static final String EXTRA_ACCOUNT_NAME = "account_name"; /** * Request code for auto Google Play Services error resolution. */ protected static final int REQUEST_CODE_RESOLUTION = 1; /** * Next available request code. */ protected static final int NEXT_AVAILABLE_REQUEST_CODE = 2; /** * Google API client. */ public GoogleApiClient mGoogleApiClient; /** * Called when activity gets visible. A connection to Drive services need to * be initiated as soon as the activity is visible. Registers * {@code ConnectionCallbacks} and {@code OnConnectionFailedListener} on the * activities itself. */ @Override protected void onResume() { super.onResume(); if (mGoogleApiClient == null) { mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addScope(Drive.SCOPE_APPFOLDER) // required for App Folder sample .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } mGoogleApiClient.connect(); } /** * Handles resolution callbacks. */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == RESULT_OK) { mGoogleApiClient.connect(); } } /** * Called when activity gets invisible. Connection to Drive service needs to * be disconnected as soon as an activity is invisible. */ @Override protected void onPause() { if (mGoogleApiClient != null) { mGoogleApiClient.disconnect(); } super.onPause(); } /** * Called when {@code mGoogleApiClient} is connected. */ @Override public void onConnected(Bundle connectionHint) { Log.i(TAG, "GoogleApiClient connected"); } /** * Called when {@code mGoogleApiClient} is disconnected. */ @Override public void onConnectionSuspended(int cause) { Log.i(TAG, "GoogleApiClient connection suspended"); } /** * Called when {@code mGoogleApiClient} is trying to connect but failed. * Handle {@code result.getResolution()} if there is a resolution is * available. */ @Override public void onConnectionFailed(ConnectionResult result) { Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); if (!result.hasResolution()) { // show the localized error dialog. GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); return; } try { result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); } catch (SendIntentException e) { Log.e(TAG, "Exception while starting resolution activity", e); } } /** * Shows a toast message. */ public void showMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } /** * Getter for the {@code GoogleApiClient}. */ public GoogleApiClient getGoogleApiClient() { return mGoogleApiClient; } } 

PickfolderActivity:

 public class PickFolderWithOpenerActivity extends BaseDemoActivity { private static final String TAG = "PickFolderWithOpenerActivity"; private static final int REQUEST_CODE_OPENER = 1; @Override public void onConnected(Bundle connectionHint) { super.onConnected(connectionHint); IntentSender intentSender = Drive.DriveApi .newOpenFileActivityBuilder() .setMimeType(new String[] { DriveFolder.MIME_TYPE }) .build(getGoogleApiClient()); try { startIntentSenderForResult( intentSender, REQUEST_CODE_OPENER, null, 0, 0, 0); } catch (SendIntentException e) { Log.w(TAG, "Unable to send intent", e); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case REQUEST_CODE_OPENER: if (resultCode == RESULT_OK) { DriveId driveId = (DriveId) data.getParcelableExtra( OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); showMessage("Selected folder's ID: " + driveId.getResourceId().toString()); BaseDemoActivity.EXISTING_FOLDER_ID = driveId.getResourceId().toString(); } finish(); break; default: super.onActivityResult(requestCode, resultCode, data); break; } } } 

Logcat:

 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.drive.testdemo/com.drive.testdemo.PickFolderWithOpenerActivity}: java.lang.NullPointerException at android.app.ActivityThread.deliverResults(ActivityThread.java:3432) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475) at android.app.ActivityThread.access$1300(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.drive.testdemo.PickFolderWithOpenerActivity.onActivityResult(PickFolderWithOpenerActivity.java:67) at android.app.Activity.dispatchActivityResult(Activity.java:5446) at android.app.ActivityThread.deliverResults(ActivityThread.java:3428) 

Yo estaba enfrentando el mismo problema con la conexión, más tarde encontré la siguiente solución,

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CODE_OPENER: if (resultCode == RESULT_OK) { final DriveId folderId = (DriveId) data.getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); showMessage("Selected folder's ID: " + folderId); AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){ int intReturnType = 0; @Override protected void onPostExecute(Void result) { //super.onPostExecute(result); //Do Logic... } @Override protected Void doInBackground(Void... params) { ConnectionResult resultApi = getGoogleApiClient().blockingConnect(); if (!resultApi.isSuccess()) { return null; } @SuppressWarnings("deprecation") DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), folderId); DriveResource.MetadataResult result = folder.getMetadata(getGoogleApiClient()).await(); if (!result.getStatus().isSuccess()) { Log.d("Folder", "Problem while trying to fetch metadata."); return null; } Metadata metadata = result.getMetadata(); if (metadata.isTrashed()) { Log.d("Folder", "Folder is trashed"); return null; } Log.d("FolderName", metadata.getTitle()); return null; } }; task.execute(); } break; default: super.onActivityResult(requestCode, resultCode, data); break; } } 
  • UsingOAuth2 obsoleta?
  • Cómo utilizar GoogleAuthorizationCodeFlow con AccessType está fuera de línea
  • Enumeración de carpetas y archivos con Google Drive SDK V2
  • Importaciones no resueltas de Google Drive
  • Uso de Google Drive para realizar copias de seguridad y restaurar bases de datos SQLite
  • ¿Cómo obtener el nombre de archivo y la ruta real del documento de unidad de Google?
  • Google Drive GET_CONTENT archivo de lectura de intenciones
  • Error al iniciar sesión en la cuenta especificada. Elija una cuenta diferente
  • API de Google Drive para Android (GDAA) getResourceId () devuelve null (problema de temporización)
  • Subir archivo de texto a Google Drive mediante Android
  • Abrir un URI de contenido de archivo de Google Drive después de usar KitKat Storage Access Framework
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.