Error: GooglePlayServicesUtil: Se ha producido un error interno. Consulte los registros para obtener información detallada. ¿Cómo puedo solucionar esto?
He pasado innumerables horas tratando de averiguar esta api de Google Drive android, y me he frustrado hasta el núcleo tratando de averiguar cómo exactamente para usarlo. Estoy utilizando el enlace de inicio en el sitio web de desarrolladores de google android, y esto es lo que he hecho:
package viva.inspection.com.inspectionpicker; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.drive.Drive; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.drive.Drive; import com.google.android.gms.drive.DriveApi.ContentsResult; import com.google.android.gms.drive.DriveId; import com.google.android.gms.drive.MetadataChangeSet; import com.google.android.gms.drive.OpenFileActivityBuilder; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.drive.Drive; import com.google.android.gms.drive.DriveApi.ContentsResult; import com.google.android.gms.drive.DriveId; import com.google.android.gms.drive.MetadataChangeSet; import com.google.android.gms.drive.OpenFileActivityBuilder; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.logging.Logger; import viva.inspection.com.inspectionpicker.MultiSpinner; public class MyActivity extends Activity implements MultiSpinner.MultiSpinnerListener, AdapterView.OnItemSelectedListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { GoogleApiClient mGoogleApiClient; final private static int RESOLVE_CONNECTION_REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Button save = (Button) findViewById(R.id.save); //array for the tasks multi-spinner String[] array = getResources().getStringArray(R.array.rooms_array); List<String> rooms = new ArrayList<String>(Arrays.asList(array)); // Create an ArrayAdapter using the string array and a default spinner layout final Spinner roomSpinner = (Spinner) findViewById(R.id.rooms); Spinner itemsSpinner = (Spinner) findViewById(R.id.inspectionItems); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.rooms_array, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner roomSpinner.setAdapter( new NothingSelectedSpinnerAdapter( adapter, R.layout.contact_spinner_row_nothing_selected, // R.layout.contact_spinner_nothing_selected_dropdown, // Optional this)); roomSpinner.setOnItemSelectedListener(this); itemsSpinner.setOnItemSelectedListener(this); final MultiSpinner multiSpinner = (MultiSpinner) findViewById(R.id.multi_spinner); multiSpinner.setItems(rooms, "(Choose One)", this); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MyActivity.this, ListActivity.class); intent.putExtra("NEW_VALUE", roomSpinner.getSelectedItem().toString()); startActivity(intent); } }); } ... @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { if (connectionResult.hasResolution()) { try { connectionResult.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE); } catch (IntentSender.SendIntentException e) { // Unable to resolve, message user appropriately } } else { GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 0).show(); } } ... @Override public void onConnected(Bundle bundle) { Drive.DriveApi.newContents(mGoogleApiClient) .setResultCallback(contentsCallback); } @Override public void onConnectionSuspended(int i) { } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { switch (requestCode) { case RESOLVE_CONNECTION_REQUEST_CODE: if (resultCode == RESULT_OK) { mGoogleApiClient.connect(); DriveId driveId = (DriveId) data.getParcelableExtra( OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); } break; } } ResultCallback<ContentsResult> contentsCallback = new ResultCallback<ContentsResult>() { @Override public void onResult(ContentsResult result) { if (!result.getStatus().isSuccess()) { // Handle error return; } MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder() .setMimeType("text/html").build(); IntentSender intentSender = Drive.DriveApi .newCreateFileActivityBuilder() .setInitialMetadata(metadataChangeSet) .setInitialContents(result.getContents()) .build(mGoogleApiClient); try { startIntentSenderForResult(intentSender, 1, null, 0, 0, 0); } catch (IntentSender.SendIntentException e) { // Handle the exception } } }; }
Este es mi manifiesto, y no tengo ni idea de cómo debería ser el manifiesto:
- ¿Puedo utilizar Google Drive como base de datos?
- Uso de Google Drive para realizar copias de seguridad y restaurar bases de datos SQLite
- Unidad de Google para realizar copias de seguridad y restaurar la base de datos y las preferencias compartidas de la aplicación de Android
- Actividad del SDK de Google Drive no encontrada Excepción
- Excepción de autenticación de Google Drive: ¿necesita permiso? (V2)
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="viva.inspection.com.inspectionpicker"> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name=".ListActivity" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MyActivity" android:label="MyActivity" android:exported="true"> <intent-filter> <action android:name="com.google.android.apps.drive.DRIVE_OPEN" /> <data android:mimeType="application/vnd.google-apps.drive-sdk.1234567890" /> <data android:mimeType="image/png" /> <data android:mimeType="image/jpeg" /> <data android:mimeType="image/jpg" /> </intent-filter> </activity> <activity android:name=".InitialChoose" android:label="@string/title_activity_initial_choose" android:windowSoftInputMode="stateHidden"> </activity> </application> </manifest>
Cuando ejecuto la aplicación, aparece un cuadro de diálogo que indica "Problema desconocido con los servicios de Google Play" y, a continuación, en logcat, aparece esto:
Error: GooglePlayServicesUtil﹕ Internal error occurred. Please see logs for detailed information.
Pero no hay nada en los registros, así que otra vez estoy completamente confundido. He mirado otras preguntas, y de hecho he creado mi aplicación con la consola de desarrollo, según las instrucciones en el enlace de inicio que se encuentra arriba.
Realmente necesito ayuda.
Gracias por adelantado.
- SDK de Google Drive: carga de imagen, reconocimiento óptico de caracteres, resultado de la descarga
- Autorización de cuenta para Google Drive Api
- ¿Integración de la unidad de Google en las aplicaciones de Android?
- Android google unidad de inicio rápido muestra la imagen de carga falla
- Common_google_play_services_unknown_issue "no se traduce en af, am, ar, be, bg
- ¿Cómo crear archivos para ir a qué cuenta con las API de Google Drive al realizar la autenticación con una cuenta de servicio?
- API de Google Drive \ Docs para Android
- ¿Cómo compartir el archivo de Google Drive desde la aplicación de Android?
Resolví mi problema; Parece que no usé la huella SHA1 correcta, por lo que no pudo firmar y autorizar mi aplicación.
También asegúrese de llenar la información de "Pantalla de consentimiento", si ve errores internos relacionados con INVALID_CLIENT_ID
.
Vea este tema relacionado: G + signin en android lanza INVALID_CLIENT_ID
En mi caso, una aplicación ejecutada correctamente, pero un día falló y apareció un cuadro de diálogo con un mensaje: "Problema desconocido con los servicios de Google Play". Después de reinstalar la aplicación el problema desapareció.
- InstrumentationTestRunner: ¿Qué obtiene android: functionalTest?
- Prioridad de truncamiento de Android TextView o Resistencia de compresión