it-swarm.com.de

<Ihre App> hat Probleme mit Google Play-Diensten - Wenn Sie GoogleApiClient verwenden, wird immer onConnectionFailed ausgelöst

Derzeit verwendet meine App

  • minSdkVersion 14
  • targetSdkVersion 23
  • "com.google.Android.gms: play-services-gcm: 8.4.0" kompilieren
  • "com.google.Android.gms: play-services-base: 8.4.0" kompilieren
  • "com.google.Android.gms: play-services-analytics: 8.4.0" kompilieren
  • "com.google.Android.gms: play-services-ads: 8.4.0" kompilieren
  • "com.google.Android.gms: play-services-drive: 8.4.0" kompilieren

Ich verwende den folgenden Code, um eine GoogleApiClient-Verbindung durchzuführen.

public class GoogleApiClientFragment extends Fragment implements
        GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    public interface ConnectionCallbacks {
        void onConnected(GoogleApiClient googleApiClient, int action);
        void onCancel(int action);
    }

    public static GoogleApiClientFragment newInstance(String accountName, int action) {
        GoogleApiClientFragment googleApiClientFragment = new GoogleApiClientFragment();
        Bundle bundle = new Bundle();
        bundle.putString(INTENT_EXTRA_ACCOUNT_NAME, accountName);
        bundle.putInt(INTENT_EXTRA_ACTION, action);
        googleApiClientFragment.setArguments(bundle);
        return googleApiClientFragment;
    }

    /**
     * Handles resolution callbacks.
     */
    @Override
    public void onActivityResult(int requestCode, int resultCode,
                                    Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RequestCode.REQUEST_GOOGLE_API_CLIENT_CONNECT) {
            if (resultCode == Activity.RESULT_OK) {
                mGoogleApiClient.connect();
            } else {
                Activity activity = this.getActivity();
                if (activity instanceof ConnectionCallbacks) {
                    ConnectionCallbacks connectionCallbacks = (ConnectionCallbacks)activity;
                    connectionCallbacks.onCancel(action);
                }
            }
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);

        Bundle bundle = this.getArguments();
        this.accountName = bundle.getString(INTENT_EXTRA_ACCOUNT_NAME);
        this.action = bundle.getInt(INTENT_EXTRA_ACTION);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mGoogleApiClient == null) {
            mGoogleApiClient = new GoogleApiClient.Builder(this.getContext())
                    .setAccountName(accountName)
                    .addApi(Drive.API)
                    .addScope(Drive.SCOPE_FILE)
                    .addScope(Drive.SCOPE_APPFOLDER)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();

            mGoogleApiClient.connect();
        }
    }

    @Override
    public void onConnected(Bundle bundle) {
        Log.i(TAG, "GoogleApiClient connected");

        Activity activity = this.getActivity();
        if (activity instanceof ConnectionCallbacks) {
            ConnectionCallbacks connectionCallbacks = (ConnectionCallbacks)activity;
            connectionCallbacks.onConnected(mGoogleApiClient, action);
        }
    }

    @Override
    public void onConnectionSuspended(int i) {
        Log.i(TAG, "GoogleApiClient connection suspended");
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        Log.i(TAG, "GoogleApiClient connection failed: " + connectionResult.toString());

        if (!connectionResult.hasResolution()) {
            Utils.showLongToast("debug two " + connectionResult.toString());

            // show the localized error dialog.
            GoogleApiAvailability.getInstance().getErrorDialog(this.getActivity(), connectionResult.getErrorCode(), 0).show();
            return;
        }
        try {
            connectionResult.startResolutionForResult(this.getActivity(), RequestCode.REQUEST_GOOGLE_API_CLIENT_CONNECT);
        } catch (IntentSender.SendIntentException e) {
            Log.e(TAG, "Exception while starting resolution activity", e);
        }
    }

    private String accountName = null;
    private int action = -1;
    private GoogleApiClient mGoogleApiClient;

    public static final int ACTION_LOAD_FROM_CLOUD = 0;
    public static final int ACTION_SAVE_TO_CLOUD = 1;
    private static final String INTENT_EXTRA_ACCOUNT_NAME = "INTENT_EXTRA_ACCOUNT_NAME";
    private static final String INTENT_EXTRA_ACTION = "INTENT_EXTRA_ACTION";

    private static final String TAG = "GoogleApiClientFragment";
}

Bestimmte Benutzer (nicht alle Benutzer) haben das folgende Problem.

hat Probleme mit Google Play-Diensten. Wenn das Problem bleibt bestehen, wenden Sie sich an den Entwickler, um Unterstützung zu erhalten.

 enter image description here

Das Fehlerdialogfeld ist auf den GoogleApiAvailability.getInstance().getErrorDialog-Code in onConnectionFailed zurückzuführen.

Wann auch immer

        mGoogleApiClient = new GoogleApiClient.Builder(this.getContext())
                .setAccountName(accountName)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

ausgeführt wird, trifft es immer

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

Wenn ich connectionResult mit toString ausdrucken kann, ergibt sich

ConnectionResult{statusCode=INTERNAL_ERROR, resolution=null, message=null}

Einer meiner Benutzer hat die folgenden Angaben.

  • Sony Xperia Z5
  • Android 6
  • Google Play Services 9.0.83
  • Nur 1 Google-Konto auf seinem Gerät

Ich versuche sogar, das APK mit Google Play Services 9.0.1 neu zu kompilieren. Das gleiche Problem tritt jedoch immer noch auf.

Irgendeine Idee, wie ich das Problem lösen kann?

15
Cheok Yan Cheng

Nachdem ich eng mit meinem Benutzer zusammengearbeitet habe, ist mir klar, dass dies die Lösung ist

1. Deinstallieren Sie die Google Play-Dienste

 enter image description here

 enter image description here

2. Aktualisieren Sie die Google Play-Dienste erneut

https://play.google.com/store/apps/details?id=com.google.Android.gms&hl=de

 enter image description here

Danach funktioniert es gut. Wenn dies immer noch nicht der Fall ist, kann ein Neustart des Geräts möglicherweise hilfreich sein ?!

1
Cheok Yan Cheng

Angenommen, es funktioniert auf anderen Anrdoid 6.0-Geräten und Sie haben das Gerät angegeben, an dem Sie Beschwerden haben. Ich vermute, es ist nicht deine App. Sony Xperia z5 hat ein bekanntes Problem bei der Aktualisierung auf Android 6.0. 

Sony behauptet, den Fehler behoben zu haben.

Re: "Google Play Store wurde gestoppt" nach Z5 Premium Marshmallow Update
April

Hallo zusammen, ich habe heute die Information erhalten, dass dies im nächsten geplanten Software-Update behoben wird.
Offizieller Sony Xperia-Support

Stellen Sie daher sicher, dass Sie dem Client mitteilen, dass alle Updates von Sony auf dem neuesten Stand sind. Dies funktioniert jedoch nicht für alle Benutzer. Die schlechte Nachricht ist, abgesehen von einem Zurücksetzen auf die Werkseinstellungen gibt es keine Korrektur, also zurück zu Android 5 und manchmal schlägt dies fehl.

Ich empfehle dem Kunden, dies mit Sony zu besprechen, und falls das Problem durch ein Zurücksetzen auf die Werkseinstellung nicht behoben werden kann, ist dies ein Verbraucherproblem, ob das Telefon ersetzt werden soll.

In diesem Thread auf der Sony-Handy-Website "Google Play Store wurde gestoppt" nach Z5 Premium Marshmallow-Update werden diese Probleme ausführlich erörtert (122 Nachrichten) und es gibt viele Vorschläge, die über das Zurücksetzen auf die Werkseinstellungen hinausgehen Sony PC-Begleiter. 

Probleme mit Xperia Z5 nach Android-Marshmallow-Update: Hier ist ein Fix von Sony

Benutzer des Sony Xperia Z5 freuen sich über den Erhalt von Android 6.0 Das Marshmallow-Update scheint als Benutzer von .__ nur von kurzer Dauer gewesen zu sein. Handys beschweren sich jetzt über Probleme, nachdem das Gerät auf .__ aktualisiert wurde. das neueste Betriebssystem.

Nutzer des Smartphones haben das japanische Unternehmen online aufgerufen Support-Seite, um ihren Zorn zu lüften und den Zugriff auf Google zu klagen Play Store wurde nach einem Update auf Android 6.0 Marshmallow angehalten.

Mehrere Xperia Z5-Benutzer beklagten sich darüber, dass ihr Smartphone "pleite" Nach der Installation des neuen Betriebssystems. Sie wurden auch mit einem Popup-Zeichen begrüßt. das besagt, dass ihr Google Play Store gestoppt wurde. Die Benutzer waren auch Play Store App kann nicht geöffnet werden.

"Sobald ich auf Marshmallow umgestiegen bin, bekomme ich immer die " Leider hat Google Play Store aufgehört ... "und die Meldung wird alle 5 Sekunden angezeigt. Ich habe versucht, den Cache zu löschen, Daten zu löschen Deinstallieren, Deaktivieren der App, Erzwingen des Schließens, Abmelden bei google und wieder einschalten. Funktioniert nicht. Ich bekomme das Popup-Fenster ohne Unterbrechung und es passiert so schnell, wie es zu Marshmallow aktualisiert wurde. " hat einen Benutzer auf der Hilfeforum.

"Ja, mit dem gleichen Problem hier. Versuchte das Deinstallieren von Der Updates in/settings/apps/google Play Store. Es wurde auch versucht, .Apk durch Chrome zu installieren. Die Fehlermeldung wird immer noch angezeigt. Mit Kunde gesprochen Support und das Ausführen der "Reparatur" -Option von Sony Bridge war Der einzige Ratschlag, den sie anboten. Erstellen Sie jetzt ein Backup, bevor ich versuche es auszuführen ... ", sagte ein anderer.

Sony hat das Problem erkannt und nur eine Fabrik angeboten zurücksetzen.

Während dadurch das Problem für andere Xperia Z5-Benutzer behoben wird, gibt es einige Zugriff auf den Play Store trotz Reset nicht möglich.

Wenn dies auf anderen Geräten geschieht, lassen Sie es mich wissen, da ich an dieser Stelle vorschlagen würde, dass dies das Problem ohne weitere Details ist.

Ich habe mich von Anfang bis Ende durchgesucht und da es für die meisten Geräte geeignet ist und nicht für einige, ist es schwer zu verstehen, was das Problem ist. Ich würde vorschlagen, es mit den aktualisierten Abhängigkeiten auszuführen, da das Android 6.0-Telefon Google Play Services 9.0.83 verwendet. Ich verstehe, dass Sie dies ausgeführt haben, aber es ist besser, auf dem Laufenden zu bleiben.

dependencies {
    compile 'com.google.Android.gms:play-services:9.0.2'
}

Es gibt bekannte Fehler bei Google-Diensten, Android 6.0-Updates und viele Fehler zwischen Android 5.0 und den Updates 5.0.1 und 5.0.2. Einige weitere, die in 5.1 behoben wurden, machen es schwierig, einige Probleme zu beheben.

Ich habe auch dieses Problem mit einer App und den Leuten konfrontiert, die besagen, dass ein solches und solches Gerät nicht funktioniert, und dann versucht, Probleme zu beheben, und manchmal kann es zu Problemen in den Telefoneinstellungen der Benutzer kommen, die auch Probleme mit einer App und einigen anderen verursachen können Diese Einstellungen variieren zwischen den Mobilteilen.

Ich würde vorschlagen, Ihre Listener explizit in Ihrem Builder zu erstellen und weitere Protokolle hinzuzufügen, um zu überprüfen, wo genau die fehlerhafte Verbindung fehlgeschlagen ist, da Sie die Verbindung innerhalb der fehlgeschlagenen Verbindung haben und Ihre Verbindung innerhalb des Verbindungsaufrufs verwalten müssen Rücken.

mGoogleApiClient = new GoogleApiClient.Builder(this.getContext())
                .setAccountName(accountName)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
            @Override
            public void onConnected(Bundle bundle) {

                if(mGoogleApiClient != null) {
                    Log.i(TAG, "GoogleApiClient connected");

                    Activity activity = this.getActivity();
                    if (activity instanceof ConnectionCallbacks) {
                        ConnectionCallbacks connectionCallbacks = (ConnectionCallbacks)activity;
                        connectionCallbacks.onConnected(mGoogleApiClient, action);
                    }
                }
            }

            @Override
            public void onConnectionSuspended(int i) {
                mGoogleApiClient.connect();
            }
        })
        .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
            @Override
            public void onConnectionFailed(ConnectionResult connectionResult) {
                Log.i(TAG, "GoogleApiClient connection failed: " + connectionResult.toString());

                if (!connectionResult.hasResolution()) {
                    Utils.showLongToast("debug two " + connectionResult.toString());

                    // show the localized error dialog.
                    GoogleApiAvailability.getInstance().getErrorDialog(this.getActivity(), connectionResult.getErrorCode(), 0).show();
                    return;
                }
                try {
                    connectionResult.startResolutionForResult(this.getActivity(), RequestCode.REQUEST_GOOGLE_API_CLIENT_CONNECT);
                } catch (IntentSender.SendIntentException e) {
                    Log.e(TAG, "Exception while starting resolution activity", e);
                }
            })
        .build();

    mGoogleApiClient.connect();
}

Ich würde auch Ihre Klassenmitglieder/Variablen hinzufügen:

private String accountName = null;
private int action = -1;
private GoogleApiClient mGoogleApiClient;
// etc

Ganz oben in Ihrer Klasse, da es verwirrend ist, sie unten zu haben, und es ist besser, lesbaren Code zu haben.

Diese Frage Mehrere GoogleApiClient, die connect () nicht starten, kann auch hilfreich sein.

Einige Nebenfragen zur Vollständigkeit für andere, die hier landen:

Es wird auch erforderlich sein, zu einem späteren Zeitpunkt ein Update auf Firebase durchzuführen GCM-Client-App für Android zu Firebase Cloud Messaging migrieren .Aus dem Versionshinweise Mai 2016 - v.9.0 .

Google Cloud Messaging Google Cloud Messaging (GCM) is integrated with Firebase. Existing users of GCM can continue to use GCM without interruption, though we strongly recommend upgrading to the new and simplified Firebase Cloud Messaging (FCM) APIs, so that users can benefit from future releases of new features and enhancements. To learn more, see Migrate a GCM Client App for Android to Firebase Cloud Messaging.

10
Yvette Colomb

Dies kann durch mehrere Probleme verursacht werden. Haben Sie die Dokumentation zu ConnectionResult gelesen? Es sagt das:

Ein ConnectionResult, das zum Beheben des Fehlers und zum Festlegen der Art des Fehlers verwendet werden kann. Um den Fehler zu beheben, muss die Auflösung von einer Aktivität gestartet werden, bei der ein nicht negativer requestCode an startResolutionForResult (Activity, int) übergeben wurde. Anwendungen sollten onActivityResult in ihrer Activity implementieren, um connect () erneut aufzurufen, wenn der Benutzer das Problem gelöst hat (resultCode ist RESULT_OK).

Es gibt auch viele Informationen über den Fehlercode, den Sie in diesem Beitrag erhalten: Fehler: ConnectionResult {statusCode = INTERNAL_ERROR, resolution = null}

Das Problem könnte auch sein, dass Sie die Laufwerk-API nicht in Ihrer Konsole hinzugefügt haben. Aber dann sollten Sie eine Logcat-Nachricht erhalten haben.

Ok, ich habe die JStock-App auch getestet auf:

Moto G3 mit Android 6 

Und ich kann den Fehler nicht reproduzieren. Die Verbindungsleiste unten ändert sich jedoch nicht, wenn Sie das Telefon in den Flugmodus schalten.

Ich bin nicht sicher, ob dies eine Hilfe für Sie ist, aber lassen Sie es mich wissen.

4
jobbert

Aktualisieren Sie minSdkVersion 14 auf minSdkVersion 16 oder höher. weil es bei mir passiert ist und nach langem Suchen, habe ich es geändert und mein Problem gelöst, so kann es für Sie funktionieren. 

1
parik dhakan

Ich habe genau das gleiche Problem und meine App stürzt genau an der Stelle (OnConnectionFailed) ab, wenn der Fehlerdialog angezeigt wird. Wenn ich jedoch nicht auf die Schaltfläche OK klicke, ist es kein Absturz, es konnte nur keine Verbindung zum Google Play Service hergestellt werden. Ich habe zwei Apps mit Setup in Graddle und alles fast gleich und ein Absturz, dieser läuft immer noch wie gewohnt sein. https://play.google.com/store/apps/details?id=com.softphan.services.smartcallrecorder

Wie lächerlich sollte es sein? Ich verwende Google Nexus 5, sodass das Problem nicht an Sony-Produkte gebunden sein sollte.

0
Cuong Phan