Ich habe GoogleApiClient
Objekt verwendet, geerbt ConnectionCallbacks
Schnittstelle und Aufruf GoogleAuthUtil.getToken(Context context, String accountName, String scope)
von zwei verschiedenen Methoden.
1. übersteuern onConnected()
Methode von ConnectionCallbacks
Schnittstelle.GoogleAuthUtil.getToken() -Methode löst IllegalStateException
onClick()
methode der taste.
In diesen beiden erhalte ich unterschiedliche Reaktion von getToken()
Methode.
während von Aufruf onConnected() Methode: es wirft Fehler wie: java.lang. IllegalStateException: Wenn Sie dies von Ihrem Haupt-Thread aus aufrufen, kann dies zu einem Deadlock führen.
Im Fall beim Anruf von onClick() Methode, funktioniert es gut !!!
Was ist der Unterschied zwischen diesen 2 Aufrufen? onClick()
wird im Hauptthread ausgeführt. Recht?
onClick() Methode:
@Override
public void onClick(View v) {
getGoogleToken();
}
onConnected() Methode:
@Override
public void onConnected(Bundle arg0) {
getGoogleToken();
}
getGoogleToken() Methode:
private void getGoogleToken() {
try {
AccountManager am = AccountManager.get(MainActivity.this);
Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
//Retrieve the google token
String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, PRIVATE_KEY); // This line generates error.
// ...
} catch (Exception ex) {
ex.printStackTrace();
}
}
Hier stacktrace:
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: java.lang.IllegalStateException: Calling this from your main thread can lead to deadlock
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzx.zzcy(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.auth.GoogleAuthUtil.zza(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at num.app.gpluslogin.MainActivity.getGoogleToken(MainActivity.java:274)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at num.app.gpluslogin.MainActivity.onConnected(MainActivity.java:207)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzk.zzk(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.internal.zzmg.zzi(Unknown Source)
01-25 17:53:02.700 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.internal.zzme.zzpi(Unknown Source)
01-25 17:53:02.701 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.internal.zzme.onConnected(Unknown Source)
01-25 17:53:02.701 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.internal.zzmi.onConnected(Unknown Source)
01-25 17:53:02.701 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.internal.zzlz.onConnected(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzj$zzg.zzqv(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzj$zza.zzv(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzj$zzc.zzqx(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at android.os.Looper.loop(Looper.java:148)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at java.lang.reflect.Method.invoke(Native Method)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-25 17:53:02.702 23235-23235/num.app.gpluslogin W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-25 17:53:09.358 1587-1605/system_process W/ActivityManager: Launch timeout has expired, giving up wake lock!
machst du für Google Anmeldung? –
Ja. Ich mache das. – pratik03
Ich bin gespannt, warum/wie Sie GoogleAuthUtil anstelle des eigentlichen Google Sign-In SDK verwendet haben. https://developers.google.com/identity/sign-in/android/ ... wir werden GoogleAuthUtil ablehnen –