Thiết lập Gradle

Mở build.gradle (Module) và thêm áp dụng plugin: 'com.google.gms.google-services' lên đỉnh của các tập tin. Thêm những dòng sau testCompile 'JUnit: JUnit: 4.12':
Mã:
[/SIZE][/FONT]
Mã:
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.0'
androidTestCompile 'com.android.support:support-annotations:23.1.1'
compile 'com.google.android.gms:play-services-auth:8.3.0'
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services:8.3.0'


Bây giờ build.gradle mở (dự án) và thêm dòng này bên trong phụ thuộc:
Mã:
classpath 'com.google.gms:google-services:1.5.0-beta2'


Layouts

Trong thư mục bố trí các dự án của bạn, xóa các tập tin content_login.xml.

Bên trong activity_login.xml, xóa <include layout="@layout/content_login"/> và thay thế các Floating mã Nút hành động với những dòng này. Điều duy nhất chúng ta cần trong cách bố trí này là nút Login:
Mã:
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_weight="1">
    <com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="visible"
        tools:visibility="gone" />
    <LinearLayout
        android:id="@+id/sign_out_and_disconnect"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="horizontal"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:visibility="gone"
        tools:visibility="visible">
        <Button
            android:id="@+id/sign_out_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Sign Out"  />
    </LinearLayout>
</RelativeLayout>


Mở lớp LoginActivity và xóa các Floating mã Nút hành động bên trong phương pháp onCreate() khi lập trình android

Before the onCreate() method add this code:
Mã:
private static final String TAG = "LoginActivity";
private static final int SIGN_IN_CODE = 9001;
private GoogleApiClient mGoogleApiClient;
private ProgressDialog mProgressDialog;
private GoogleSignInAccount account;


Bên trong phương thức onCreate, trước khung đóng, thêm những dòng này mà thiết lập các kết nối đến các API Google và gắn chúng vào một nút đăng nhập:
Mã:
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this , this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();
SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
signInButton.setSize(SignInButton.SIZE_STANDARD);
signInButton.setScopes(gso.getScopeArray());


Sau khi phương pháp onCreate(), chúng tôi sẽ thực hiện các phương pháp ghi đè. Đầu tiên là onStart() và một giữ chỗ cho các phương pháp onConnectionFailed. Thêm họ vào bên trong lớp LoginActivity:
Mã:
@Override
public void onStart() {
    super.onStart();
    OptionalPendingResult<GoogleSignInResult> optPenRes = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
    if (optPenRes.isDone()) {
        Log.d(TAG, "Yayy!");
        GoogleSignInResult result = optPenRes.get();
        handleSignInResult(result);
    } else {
        optPenRes.setResultCallback(new ResultCallback<GoogleSignInResult>() {
            @Override
            public void onResult(GoogleSignInResult googleSignInResult) {
                handleSignInResult(googleSignInResult);
            }
        });
    }
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}


Phương pháp thứ hai được ghi đè onActivityResult (). Thêm nó sau khi các phương pháp cuối cùng được thêm. Các mã như sau:
Mã:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SIGN_IN_CODE) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
    }
}


Tiếp thêm handeSignInResult () phương pháp sau khi phương pháp onActivityResult ():
Mã:
private void handleSignInResult(GoogleSignInResult result) {
  Log.d(TAG, "handleSignInResult:" + result.isSuccess());
  if (result.isSuccess()) {
      updateUI(true);
      account = result.getSignInAccount();
  } else {
      updateUI(false);
  }
}


Bây giờ chúng ta sẽ thêm signin() và phương pháp signOut():
Mã:
private void signIn() {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, SIGN_IN_CODE);
}
private void signOut() {
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
            new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    updateUI(false);
                }
            });
}

Chúng tôi đang đi qua các DisplayName và ImageUrl dây để ý định mới như tính năng bổ sung.

Mã:
private void updateUI(boolean signedIn) {
    if (signedIn) {
        findViewById(R.id.sign_in_button).setVisibility(View.GONE);
        findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
        Intent main = new Intent(this, MainActivity.class);
        main.putExtra("displayname", account.getDisplayName());
        main.putExtra("imageurl", account.getPhotoUrl().toString());
        startActivity(main);
        finish();
    } else {
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
        findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
    }
}


Phương pháp cuối cùng chúng ta cần phải thực hiện trong lớp học của chúng tôi là LoginActivity onClick (View v):
Mã:
@Override
public void onClick(View v) {
  switch (v.getId()) {
      case R.id.sign_in_button:
          signIn();
          break;
      case R.id.sign_out_button:
          signOut();
          break;
  }
}


Lớp LoginActivity đã hoàn tất.

Hoạt động chính của lớp

Mở activity_main.xml và thay thế <include layout="@layout/content_main"/> với:
Mã:
<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:paddingTop="100dp">
  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello"
      android:id="@+id/textView"
      android:layout_gravity="center_horizontal"/>
  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="New Text"
      android:id="@+id/nameSurnameText"
      android:layout_gravity="center_horizontal"/>
  <ImageView
      android:layout_width="150dp"
      android:layout_height="150dp"
      android:id="@+id/imageView"
      android:layout_gravity="center_horizontal"/>
  <Button
      android:id="@+id/share_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Share on Google+"
      android:layout_gravity="center_horizontal"/>
  <Button
      android:id="@+id/sign_out_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Sign Out"
      android:visibility="visible"
      android:layout_gravity="center"/>
</LinearLayout>


>> Khóa học lập trình android cơ bản nâng cao tại hà nội !




Chủ đề tương tự: