Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Google Plus Integration in Android Studio

I'm making application and I want to integrate it with G+, to make user login with Google account. To create app I use Android Studio.

I read many question and answers on Stack Overflow but I can't fix my app!

Here are steps I made:
1. Add google-play-services.jar to libs folder of my project
2. Click "Add As Library" on jar file in Android-Studio project explorer
3. Add script to java file from example in the web
4. Add google-play-services.jar library to Build.Gradle file
5. Starting the app makes it crash

The question is: How to add Google+ ingeration to application made using Android Studio, am I doing something wrong?, Thank your for you help.

Here are my source codes:

Java Class:

import com.google.android.gms.common.ConnectionResult;
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 StartActivity extends Activity implements View.OnClickListener, ConnectionCallbacks, OnConnectionFailedListener {

    private static final String TAG = "ExampleActivity";
    private static final int REQUEST_CODE_RESOLVE_ERR = 9000;

    private ProgressDialog mConnectionProgressDialog;
    private PlusClient mPlusClient;
    private ConnectionResult mConnectionResult;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loading_screen);

        mPlusClient = new PlusClient.Builder(this, this, this)
                .setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity")
                .build();

        mConnectionProgressDialog = new ProgressDialog(this);
        mConnectionProgressDialog.setMessage("Signing in...");

        initializeSplashElements();

    }


    ///     ***     ///         PLUS INTEGRATION        ///     ***     ////

    @Override
    protected void onStart() {
        super.onStart();
        mPlusClient.connect();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mPlusClient.disconnect();
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
            } catch (IntentSender.SendIntentException e) {
                mPlusClient.connect();
            }
        }
        // Save the result and resolve the connection failure upon a user click.
        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(Bundle bundle) {
        String accountName = mPlusClient.getAccountName();
        Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onDisconnected() {
        Log.d(TAG, "disconnected");
    }

    ///     ***     ///         PLUS INTEGRATION        ///     ***     ///

    (...)

}

Layout XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              tools:context=".StartActivity"
              android:clickable="false"
              android:background="@drawable/ziel_pomar_tlo">

    <ImageView
            android:layout_width="fill_parent"
            android:layout_height="150dp"
            android:id="@+id/splashLogo"
            android:src="@drawable/catch_up_logo_flatten"
            android:contentDescription="@string/catchup_logo_describe"
            android:layout_marginTop="40dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:focusable="false"/>

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="@string/loading_3dot"
            android:id="@+id/loadingText"
            android:enabled="true"
            android:gravity="center"
            android:textSize="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="35dp"
            android:layout_marginRight="35dp"
            android:layout_marginBottom="35dp"/>

    <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/scrollView"
            android:layout_above="@+id/loadingText"
            android:layout_below="@+id/splashLogo"
            android:layout_margin="10dp"
            android:layout_alignParentEnd="false"
            android:layout_centerHorizontal="true">

        <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:baselineAligned="false"
                android:clickable="false"
                >

            <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top"
                    android:id="@+id/gps_row">

                <TextView
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/loading_screen_no_gps"
                        android:id="@+id/gps_desc"
                        android:textSize="20dp"/>

                <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:weightSum="3"
                        android:layout_marginTop="10dp">

                    <Button
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/loading_screen_no_gps_settings"
                            android:id="@+id/gps_settings"
                            android:layout_weight="2"/>

                    <Button
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/loading_screen_no_gps_ok"
                            android:id="@+id/gps_fixed"
                            android:layout_weight="1"/>
                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/web_row"
                    android:layout_gravity="bottom|top"
                    android:layout_marginTop="20dp">

                <TextView
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/loading_screen_no_web"
                        android:id="@+id/web_desc"
                        android:textSize="20dp"/>

                <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:weightSum="3"
                        android:layout_marginTop="10dp">

                    <Button
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/loading_screen_no_web_settings"
                            android:id="@+id/web_wifi_settings"
                            android:layout_weight="1"/>

                    <Button
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/loading_screen_no_web_settings2"
                            android:id="@+id/web_3g_settings"
                            android:layout_weight="1"/>

                    <Button
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/loading_screen_no_web_ok"
                            android:id="@+id/web_fixed"
                            android:layout_weight="1"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

</RelativeLayout>

Build.Gradle:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar', 'libs/google-play-services.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 17
        compileSdkVersion 17
    }
}
like image 750
Jakub Mendyk Avatar asked Jun 16 '13 16:06

Jakub Mendyk


People also ask

What is GoogleSignInClient?

public class GoogleSignInClient extends GoogleApi<GoogleSignInOptions> A client for interacting with the Google Sign In API.


1 Answers

You can use Google Repository, without import any libs (.jar) in your code

UPDATE: if you looking for Google (or third party) library you can check: http://gradleplease.appspot.com/ (by Chris Broadfoot, a Google Developer)

dependencies {
    compile 'com.google.android.gms:play-services:4.4.52'
    compile 'com.android.support:support-v4:19.1.0'
    // compile files('libs/android-support-v4.jar') // OLD: can remove

    // Other useful library
    // compile 'com.android.support:appcompat-v7:19.1.0'
    // compile 'com.android.support:gridlayout-v7:19.1.0'
    // compile 'com.android.support:mediarouter-v7:19.1.0'
    // compile 'com.android.support:support-v13:19.1.0'

    // Note: these libraries require the "Google Repository" and "Android Repository"
    //       to be installed via the SDK manager.
}

Ref: https://plus.google.com/+AndroidDevelopers/posts/4Yhpn6p9icf

like image 102
Jackl Avatar answered Sep 26 '22 03:09

Jackl