NullPointerException: 'app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()'

66 Views Asked by At

I am trying to login with Sign in with Google in my app and the onetap is used on a Googlelogin.java file in my native app.

Always failing with the error If I click the login with Google button in the line activityResultLauncher.launch(intentSenderRequest);

java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

Code:

Googlelogin.java

public class Googlelogin extends AppCompatActivity implements SocialLoginswwwwwwwwwwwwwwwwwwwwwwwwww, GoogleApiClient.OnConnectionFailedListener  {


@RequiresApi(api = Build.VERSION_CODES.DONUT)
    @Override
    public void login(Context context) {
        ActivityResultLauncher<IntentSenderRequest> activityResultLauncher =
                registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), new ActivityResultCallback<ActivityResult>() {
                    @Override
                    public void onActivityResult(ActivityResult result) {
                        try {
                            SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(result.getData());
                            String idToken = credential.getGoogleIdToken();
                            if (idToken !=  null) {
                                // Got an ID token from Google. Use it to authenticate
                                // with your backend.
                                String email = credential.getId();
                                String username = credential.getDisplayName();
                                Toast.makeText(context,"Email : "+email+" Name : "+username, Toast.LENGTH_SHORT).show();
                                //
                                //Log.d("TAG", "Got ID token.");
                            }
                        } catch (ApiException e) {
                            e.printStackTrace();
                        }
                    }
                });

        oneTapClient = Identity.getSignInClient(context);
        signInRequest = BeginSignInRequest.builder()
                .setPasswordRequestOptions(BeginSignInRequest.PasswordRequestOptions.builder()
                        .setSupported(true)
                        .build())
                .setGoogleIdTokenRequestOptions(BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
                        .setSupported(true)
                        .setServerClientId("885176601647-qnk12j18ln08dhhhal4lgprmlrreor1q.apps.googleusercontent.com")
                        .setFilterByAuthorizedAccounts(true)
                        .build())
                .setAutoSelectEnabled(true)
                .build();

        oneTapClient.beginSignIn(signInRequest)
                .addOnSuccessListener((Activity) context, new OnSuccessListener<BeginSignInResult>() {
                    @Override
                    public void onSuccess(BeginSignInResult result) {
                        // IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(result.getPendingIntent().getIntentSender()).build();
                        //onActivityResult(0, 10, intentSenderRequest.getFillInIntent());

                        IntentSenderRequest intentSenderRequest =
                                new IntentSenderRequest.Builder(result.getPendingIntent().getIntentSender()).build();
                        activityResultLauncher.launch(intentSenderRequest);
                      
                    }
                })
                .addOnFailureListener((Activity) context, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.d(TAG, e.getLocalizedMessage());
                        Toast.makeText(context,e.getLocalizedMessage(),Toast.LENGTH_SHORT).show();

                    }
                });

}
}

}
1

There are 1 best solutions below

4
Name On

I advice you, moving the launcher object creation part to onCreate()

ActivityResultLauncher<IntentSenderRequest> activityResultLauncher =
            registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    try {
                        SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(result.getData());
                        String idToken = credential.getGoogleIdToken();
                        if (idToken !=  null) {
                            // Got an ID token from Google. Use it to authenticate
                            // with your backend.
                            String email = credential.getId();
                            String username = credential.getDisplayName();
                            Toast.makeText(context,"Email : "+email+" Name : "+username, Toast.LENGTH_SHORT).show();
                            //
                            //Log.d("TAG", "Got ID token.");
                        }
                    } catch (ApiException e) {
                        e.printStackTrace();
                    }
                }
            });