2016-11-17 3 views
-1

Я использую Google знак в API для входа он работает все нормально, но я застрял на том, как перейти к следующей операции или на экране после успешного входа в систему, как перейти к следующему экрану после Google знак в

MainActivity. Java

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.NetworkImageView; 
import com.google.android.gms.auth.api.Auth; 
import com.google.android.gms.auth.api.signin.GoogleSignInAccount; 
import com.google.android.gms.auth.api.signin.GoogleSignInOptions; 
import com.google.android.gms.auth.api.signin.GoogleSignInResult; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.SignInButton; 
import com.google.android.gms.common.api.GoogleApiClient; 

import org.w3c.dom.Text; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener { 

//Signin button 
private SignInButton signInButton; 

//Signing Options 
private GoogleSignInOptions gso; 

//google api client 
private GoogleApiClient mGoogleApiClient; 

//Signin constant to check the activity result 
private int RC_SIGN_IN = 100; 

//TextViews 
private TextView textViewName; 
private TextView textViewEmail; 
private NetworkImageView profilePhoto; 

//Image Loader 
private ImageLoader imageLoader; 

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

    //Initializing Views 
    textViewName = (TextView) findViewById(R.id.textViewName); 
    textViewEmail = (TextView) findViewById(R.id.textViewEmail); 
    profilePhoto = (NetworkImageView) findViewById(R.id.profileImage); 

    //Initializing google signin option 
    gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .build(); 

    //Initializing signinbutton 
    signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
    signInButton.setSize(SignInButton.SIZE_WIDE); 
    signInButton.setScopes(gso.getScopeArray()); 

    //Initializing google api client 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 


    //Setting onclick listener to signing button 
    signInButton.setOnClickListener(this); 
} 


//This function will option signing intent 
private void signIn() { 
    //Creating an intent 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 

    //Starting intent for result 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    //If signin 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     //Calling a new function to handle signin 
     handleSignInResult(result); 
    } 
} 


//After the signing we are calling this function 
private void handleSignInResult(GoogleSignInResult result) { 
    //If the login succeed 
    if (result.isSuccess()) { 
     //Getting google account 
     GoogleSignInAccount acct = result.getSignInAccount(); 

     //Displaying name and email 
     textViewName.setText(acct.getDisplayName()); 
     textViewEmail.setText(acct.getEmail()); 

     //Initializing image loader 
     imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext()) 
       .getImageLoader(); 

     imageLoader.get(acct.getPhotoUrl().toString(), 
       ImageLoader.getImageListener(profilePhoto, 
         R.mipmap.ic_launcher, 
         R.mipmap.ic_launcher)); 

     //Loading image 
     profilePhoto.setImageUrl(acct.getPhotoUrl().toString(), imageLoader); 

    } else { 
     //If login fails 
     Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onClick(View v) { 
    if (v == signInButton) { 
     //Calling signin 
     signIn(); 
    } 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 

<com.google.android.gms.common.SignInButton 
android:id="@+id/sign_in_button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal" /> 

<com.android.volley.toolbox.NetworkImageView 
android:id="@+id/profileImage" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

<TextView 
android:text="Name" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

<TextView 
android:id="@+id/textViewName" 
android:textStyle="bold" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 


<TextView 
android:text="email" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 


<TextView 
android:id="@+id/textViewEmail" 
android:textStyle="bold" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

</LinearLayout> 

я просто хотел бы знать где я могу добавить следующее действие при нажатии кнопки google google после успешного входа в систему, он покажет идентификатор имени электронной почты и изображение этого конкретного человека, как перейти к следующему экрану после 5 секунд входа после отображения идентификатора электронной почты изображения и имени

+0

вы можете запустить следующий после получения успеха в handleSignInResult –

ответ

1

в функции handleSignInResult, вы можете вызвать другую деятельность, если вы получили Sucess результата.

Вы можете использовать обработчик в течение 5 секунд. Напишите ниже код после загрузки строки изображения.

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() 
    { 
     Intent mainIntent = new Intent(MainActivity.this, OtherActivityName.class); 
     startActivity(mainIntent); 
    } 
}, 5000); 
+0

, где я должен использовать этот новый обработчик – Imzzy

+0

В функции handleSignInResult, в случае (result.isSuccess()) {} после загрузки строки изображения. –

+0

Неприемлемый символ разрешения. Обработчик – Imzzy

1

StartActivity внутри handleSignInResult метода после result.isSuccess()

if (result.isSuccess()) { 
    //Getting google account 
    GoogleSignInAccount acct = result.getSignInAccount(); 

    //Displaying name and email 
    textViewName.setText(acct.getDisplayName()); 
    textViewEmail.setText(acct.getEmail()); 

    //Initializing image loader 
    imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext()) 
      .getImageLoader(); 

    imageLoader.get(acct.getPhotoUrl().toString(), 
      ImageLoader.getImageListener(profilePhoto, 
        R.mipmap.ic_launcher, 
        R.mipmap.ic_launcher)); 

    //Loading image 
    profilePhoto.setImageUrl(acct.getPhotoUrl().toString(), imageLoader); 
    Intent nextactivity = new Intent(getApplicationContext(), newclass.class); 
    startActivity(nextactivity); 


} else { 
    //If login fails 
    Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show(); 
} 

обновления некоторой задержки перед переходом к следующему деятельности

new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
    Intent nextactivity = new Intent(getApplicationContext(), newclass.class); 
    startActivity(nextactivity); 
        } 
       }, 5000); 
+0

это работает, но мне нужен некоторая задержка перед переходом к следующему деятельности – Imzzy

+0

проверить мой ответ обновления – sasikumar

1

Вы можете добавить следующий класс активности в метод handleSignInResult при успешном завершении входа в систему.

//If the login succeed 
if (result.isSuccess()) { 
    //Add your next activity in here 
     startActivity(new Intent(MainActivity.this,NextActivity.class)); 

} else { 
    //If login fails 
    Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show(); 
} 

Для отображения имени учетной записи Google в следующей деятельности, вы можете добавить этот код: в MainActivity классе

handleSignInResult(){ 
//Displaying name and email 
String personName = acct.getDisplayName(); 
textViewName.setText(personName); 
textViewEmail.setText(acct.getEmail()); 

Intent i = new Intent(MainActivity.this, NextActivity.class); i.putExtra("name", personName); startActivity(i); }

И добавьте этот код для класса приемника NextActivity:

String name; 

Bundle extras = getIntent().getExtras(); if(extras !=null) { name = extras.getDouble("name"); }

+0

собирается перейти к следующей операции, но мне нужно, чтобы пользователь был там на t экран для экрана по крайней мере 5 секунд – Imzzy

+0

В вашем классе MainActivity добавьте следующий код: – Farahdis

+0

// Отображение имени и адреса электронной почты Строка personName = acct.getDisplayName(); textViewName.setText (personName); textViewEmail.setText (acct.getEmail()); Намерение i = новое намерение (MainActivity.this, NextActivity.class); i.putExtra ("name", personName); startActivity (i); И добавьте этот код для класса приемника NextActivity: String name; Bundle extras = getIntent(). GetExtras(); если (дополнительно) = null) { name = extras.getDouble ("name"); } – Farahdis

0

Вы должны создать еще один класс под названием LoginActivity и добавить это в свой манифест.

Посмотрите здесь https://developer.android.com/guide/components/intents-filters.html

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".activities.LoginActivity" 
     android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.AppCompat.NoActionBar.FullScreen" /> 
    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_app_id" /> 
    <activity android:name=".activities.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
1

Вы можете начать «countdowntimer» на 5 секунд, когда пользователь нажимает кнопку «Google Вход» кнопку один раз пользователь вошел в систему успешно, то вы можете заполнить данные в переменной и после 5 секунд «countdowntimer» вызывается метод «onFinish» оттуда, вы можете отправить пользователя на следующий экран.