App Closes On Clicking Google SIgn In Button

僤鯓⒐⒋嵵緔 提交于 2019-12-14 03:49:41

问题


I was trying to integrate google sign in into my app. When I clicked the button, the app closes(not crashes). What's the mistake I'm making here? I Tried my best to follow what the google developers site told me. I apologise in advance for the long code.

My Java Code :

      import static com.google.android.gms.common.SignInButton.COLOR_DARK;

    public class User_Name extends AppCompatActivity implements
            GoogleApiClient.OnConnectionFailedListener{
        private PrefManager2 prefManager;
        SignInButton signInButton;
        String email, name;
        LoginButton loginButton;
        GoogleApiClient mGoogleApiClient;

        private static final int RC_SIGN_IN = 9001;
        SQLiteDatabase db;
        private GoogleSignInOptions googleSignInOptions;


        private static final String EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$";
        private Pattern pattern = Pattern.compile(EMAIL_PATTERN);
        private Matcher matcher; //validate email

        Button normalLogin;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


            prefManager = new PrefManager2(this);
            if (!prefManager.isFirstTimeLaunch()) {
                launchHomeScreen(); //custom method
                finish();
            }


            setContentView(R.layout.activity_user__name);




            googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().requestId().build();
            mGoogleApiClient  = new GoogleApiClient.Builder(this).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,googleSignInOptions).build();

            SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); //google Integration
            signInButton.setColorScheme(COLOR_DARK);
            signInButton.setSize(SignInButton.SIZE_WIDE);


            signInButton.setScopes(googleSignInOptions.getScopeArray());


            signInButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
                    startActivityForResult(signInIntent, RC_SIGN_IN);
                }
            });

    //________________________________________________________________________________________________________________________


    //____________________________________________________________________________________________________







        }


        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);


            if(requestCode == RC_SIGN_IN){
                GoogleSignInResult googleSignInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
                GoogleSignInAccount googleSignInAccount = googleSignInResult.getSignInAccount();

                try{
                    email =  googleSignInAccount.getEmail();
                    name = googleSignInAccount.getDisplayName();

                    //-------------
                    Beacon_Database Beacon_Database = new Beacon_Database(User_Name.this);
                    db = Beacon_Database.getReadableDatabase();

                    //----------------try-----------




                    if(email.equals("")){
                        email = "None";
                    }

                    ContentValues values1 = new ContentValues();
                    values1.put("NAME",name);
                    values1.put("EMAIL",email);


                    db.insert("LOGIN",null,values1);

                    Toast.makeText(User_Name.this,email, Toast.LENGTH_LONG).show();

                }catch(NullPointerException exc){
                    Toast.makeText(User_Name.this,"Something Seems To Have Gone Wrong",Toast.LENGTH_LONG).show();
                }

            }
        }

        private void launchHomeScreen() {
            prefManager.setFirstTimeLaunch(false);
            Intent intent = new Intent(User_Name.this,UserLocation2.class);
            startActivity(intent);
            finish();
        }


        @Override
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
            AlertDialog.Builder alertdialog = new AlertDialog.Builder(User_Name.this);
            alertdialog.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialogInterface.dismiss();
                }
            });
            alertdialog.setTitle("Error");
            alertdialog.setMessage("Please Check Your Network Connection");
            alertdialog.show();
        }
}

my layout xml with the sign in button :

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:fb="http://schemas.android.com/apk/res-auto"
    android:fitsSystemWindows="true">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="56dp"
        android:background="@drawable/attempt"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        android:weightSum="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="72dp"
           android:layout_marginBottom="16dp"
            android:layout_gravity="center_horizontal"
            android:textAppearance="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"
            android:text="Beacon"
            android:fontFamily="casual"
            android:textColor="#e0e0e0"
            android:textStyle="normal|bold|italic"
            android:typeface="sans"
            android:textAllCaps="false"
            android:textSize="65sp"
            android:id="@+id/textView" />



        <android.support.design.widget.TextInputLayout
            android:id = "@+id/namewrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:animateLayoutChanges="true"
            android:textColorHint="#ffffff"
            android:layout_marginBottom="8dp">

            <EditText android:id="@+id/input_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:animateLayoutChanges="true"
                android:textColorHint="#ffffff"
                android:textColor="#ffffff"
                android:hint="Name" />
        </android.support.design.widget.TextInputLayout>




        <android.support.design.widget.TextInputLayout
            android:id = "@+id/emailwrap"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:textColorHint="#ffffff"
            android:layout_marginBottom="8dp">
            <EditText android:id="@+id/input_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:hint="Email" />
        </android.support.design.widget.TextInputLayout>
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone"
            android:id = "@+id/authProgress"/>





        <!-- Signup Button -->
        <Button
            android:id="@+id/btn_login"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:layout_marginBottom="24dp"
            android:padding="12dp"
            android:background="#004D40"
            android:textColor="#e0e0e0"
            android:text="Create Account"/>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#ffffff"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="OR"
            android:layout_gravity="bottom|center"
            android:paddingTop="8dp"
            android:textSize = "40sp"
            android:textColor="#ffffff"
            android:fontFamily="casual" />





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


    />



    </LinearLayout>


</FrameLayout>

回答1:


This may or may not be relevant but check that your Activity is not set as a SingleTask Activity.

Some devices will not correctly return from the Google UI/libraries when they are in a separate task as they cannot communicate over process boundaries.

Understanding Launch Mode




回答2:


It may be possible because you are using the finish() method in your launchHomeScreen() function



来源:https://stackoverflow.com/questions/42441373/app-closes-on-clicking-google-sign-in-button

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!