Google代码的Android代码在一项活动中登录,并从另一项活动中注销

时间:2015-08-10 04:25:45

标签: android google-plus logout google-signin

我需要一步一步的程序,包括谷歌的一些示例安卓代码和一项活动中的登录以及Android eclipse中另一项活动的注销。

3 个答案:

答案 0 :(得分:3)

经过一周多的努力才找到答案。 我这样做了, 在sharedpreferences中签名后保存boolean isSignedIn为真。

private SharedPreferences.Editor editor;
private SharedPreferences prefs;

editor = getSharedPreferences(getString(R.string.userDetails), MODE_PRIVATE).edit();
editor.putBoolean(getString(R.string.isSignedIn), true);
editor.apply();`

现在,当用户点击退出时,从任何活动中,将布尔值更改为false。

现在在您的登录活动中构建googleApiClient。在其onStart方法中。 检查isSignedIn是否为假。

@Override
public void onStart() {
super.onStart();
if (!prefs.getBoolean(getString(R.string.isSignedIn), false)) {
    signOut();
    }     
}

onConnected

中执行相同的操作
@Override
public void onConnected(Bundle connectionHint) {
    if (mGoogleApiClient.isConnected()) {
        Log.i(TAG, "onConnected: " + "yes it is connected");
        if (!prefs.getBoolean(getString(R.string.isSignedIn), false)) {
            signOut();
        }
    }
}

这将注销并撤销访问。

public void signOut() {
    if (mGoogleApiClient != null) {
        Log.e(TAG, "signOut: " + mGoogleApiClient + mGoogleApiClient.isConnected());
        Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
        if (mGoogleApiClient.isConnected()) {
                    new ResultCallback<Status>() {
                        @Override
                        public void onResult(Status status) {
                            // ...
                            Log.i(TAG, "onResult: " + mGoogleApiClient);
                        }
                    });
         Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
                    new ResultCallback<Status>() {
                        @Override
                        public void onResult(Status status) {
                            Log.i(TAG, "onResult: Revoke Access status:" + status.getStatus());
                        }
                    });
        }
    }
}

答案 1 :(得分:0)

将此方法用于Logout ..

private GoogleApiClient mGoogleApiClient;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
     Button mButton = (Button)findviewById(R.id.mButton);
        mButton .setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                     signOutFromGplus();
                }
            });
}

public void signOutFromGplus() {
    if (mGoogleApiClient.isConnected()) {
        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
        mGoogleApiClient.disconnect();
        mGoogleApiClient.connect();
    }
}

答案 2 :(得分:0)

要退出google plus,您可以使用应用程序类

学习你可以参考这些文章

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

https://developer.android.com/reference/android/app/Application.html

然后在此类中为您指定变量(使用此类的优点是该类在应用程序启动时启动,您可以在应用程序的任何位置访问它):

您的申请类名称:

public class MyApplication
{
public GoogleApiClient mGoogleApiClient;
}

并在您的登录活动类

在登录时将其指定为变量

/**
     * Sign-in into google
     * */
    private void signInWithGplus() {
        if (!mGoogleApiClient.isConnecting()) {
MyApplication myApp = (MyApplication )getApplicationContext();
myApp.mGoogleApiClient = mGoogleApiClient;

            mSignInClicked = true;
            resolveSignInError();
        }
    }

和退出活动

public void signOutFromGplus() {
MyApplication myApp = (MyApplication )getApplicationContext();

    if (myApp.mGoogleApiClient.isConnected()) {
        Plus.AccountApi.clearDefaultAccount(myApp.mGoogleApiClient);
        myApp.mGoogleApiClient.disconnect();
        myApp.mGoogleApiClient.connect();
    }
}

希望您了解此程序。