Google+ Melden Sie sich von einer anderen Aktivität ab
Habe ich begonnen, die Google+ API
für android, und ich haben ein sign-in Applikation nach diesem tutorial:
https://developers.google.com/+/mobile/android/sign-in
Nun, das problem ist, dass ich erstellen möchten, die Schaltfläche "Abmelden" aus einer anderen Activity
und was ich versucht habe hat nicht wirklich funktioniert..
Meine GPlusLogin code (Aktivität der Google+ - Login):
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import com.google.android.gms.common.*;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.plus.PlusClient;
public class GPlusLogin extends Activity implements ConnectionCallbacks, OnConnectionFailedListener{
private static final int REQUEST_CODE_RESOLVE_ERR = 9000;
private static final String TAG = "GPlusLogin";
private ProgressDialog mConnectionProgressDialog;
private PlusClient mPlusClient;
private ConnectionResult mConnectionResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gplus_layout);
mPlusClient = new PlusClient.Builder(this, this, this).setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity").build();
Bundle extras = getIntent().getExtras();
mConnectionProgressDialog = new ProgressDialog(this);
mConnectionProgressDialog.setMessage("Signing in...");
if(extras!=null){
if(extras.getString("signout")!=null){
if (mPlusClient.isConnected()) {
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
mPlusClient.connect();
finish();
startActivity(getIntent());
}
}
}else{
findViewById(R.id.sign_in_button).setOnClickListener(new OnClickListener() {
public void onClick(View view) {
//TODO Auto-generated method stub
if (view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
if (mConnectionResult == null) {
mConnectionProgressDialog.show();
} else {
try {
mConnectionResult.startResolutionForResult(GPlusLogin.this, REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
//Try connecting again.
mConnectionResult = null;
mPlusClient.connect();
}
}
}
}
});
}
}
@Override
protected void onStart() {
//TODO Auto-generated method stub
super.onStart();
mPlusClient.connect();
}
@Override
protected void onStop() {
//TODO Auto-generated method stub
super.onStop();
mPlusClient.disconnect();
}
@Override
public void onConnectionFailed(ConnectionResult result) {
//TODO Auto-generated method stub
if (mConnectionProgressDialog.isShowing()) {
//The user clicked the sign-in button already. Start to resolve
//connection errors. Wait until onConnected() to dismiss the
//connection dialog.
if (result.hasResolution()) {
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
mPlusClient.connect();
}
}
}
mConnectionResult = result;
}
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
mConnectionResult = null;
mPlusClient.connect();
}
}
@Override
public void onConnected() {
//TODO Auto-generated method stub
mConnectionProgressDialog.dismiss();
Intent main = new Intent(GPlusLogin.this, MainActivity.class);
main.putExtra("result", true);
startActivity(main);
}
@Override
public void onDisconnected() {
//TODO Auto-generated method stub
Log.d(TAG, "disconnected");
}
}
Mein Disconnect-code auf MainActivity
:
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if(extras==null){
Intent intent = new Intent(this, GPlusLogin.class);
startActivity(intent);
}
TextView text1 = (TextView) findViewById(R.id.text1);
text1.setText("You Are Connected :D");
Button SignOut = (Button) findViewById(R.id.sign_out_gplus);
SignOut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, GPlusLogin.class);
intent.putExtra("signout", true);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
InformationsquelleAutor der Frage arielschon12 | 2013-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur fügen Sie diese auf Ihre neue Tätigkeit, wo Sie wollen, dass Ihr logout-button für google+, dort zu sein :
und weiter:
InformationsquelleAutor der Antwort sommesh
Hey ich habe dieses problem gelöst, indem ich mich, arbeiten wie Charme
Was ist das problem : Google plus anmelden in einer Tätigkeit, sondern müssen die Abmeldung von einer anderen Aktivität
Lösung:
Meine Google-plus Ausloggen Aktivität ist wie folgt:
Beschreibung zur Lösung:
Für die single Paket der google plus API erzeugt ein token & Sitzung.Nur hier, einfach um eine weitere Sitzung im logout-Seite auch.Sie können ganz einfach Abmelden aus der Sitzung nun
Ich haben versucht, eine Menge über dieses problem,die Abmeldung von der aktuellen Sitzung, nur versuchen, diese .es wird auf jeden Fall funktionieren. Zweifel lassen Sie mich wissen,
InformationsquelleAutor der Antwort madhu sudhan
Wäre es wahrscheinlich einfacher sein, erstellen Sie eine Basisklasse und Erben die connect/disconnect-Methoden. Photohunt, unser vollständiges Beispiel, Dokumente, die dieses design im detail.
Docs
Code
InformationsquelleAutor der Antwort jonathanberi
Nach kämpfen für eine Woche, um herauszufinden, die Antwort.
Ich Tat dies,
Nach der Anmeldung speichern Boolesche isSignedIn in sharedpreferences, wie wahr.
Nun von jeder Aktivität, wenn der Benutzer klickt auf logout, änderung der boolean auf false.
In Ihrem Login-Aktivität, wo
googleApiClient
zu bauen. In seiner onStart-Methode.Überprüfen Sie, ob
isSignedIn
ist falsch.Tun das gleiche in
onConnected
Dies logout und revokeAccess.
InformationsquelleAutor der Antwort niranjan kurambhatti
Sobald Sie klicken Sie auf logout aus einer anderen Tätigkeit,versuchen Sie, senden Sie eine Absicht, mit extra, um anzuzeigen, dass der logout-button geklickt wird. Dann auf die Login-Aktivität
Andere Aktivität
InformationsquelleAutor der Antwort Lee Yeong Guang
Jonathan ist richtig, dass eine Basisklasse oder ein fragment würde Ihr Leben leichter machen. Das heißt, der code hier arbeiten könnte - das problem ist, dass Sie überprüft haben, ob der PlusClient verbunden ist, in
onCreate()
- aber Sie nicht verbinden Sie es bisonStart()
. Sie würden wahrscheinlich benötigen, um zu überprüfen, die Absicht in deronConnected()
Methode, und führen Sie das Zeichen gibt.InformationsquelleAutor der Antwort Ian Barber
Können Sie bekommen Instanz FirebaseAuth überall aus der app als FirebaseAuth ist eine singleton-Klasse.
InformationsquelleAutor der Antwort Joyal
sommesh's Antwort ist perfekt, aber für weniger code, den Sie verwenden können, "Öffentliche Statische Methode" wie folgt aus:
Und auf Ihre weitere Tätigkeit nennen es:
InformationsquelleAutor der Antwort Ali_dev