简体   繁体   English

新活动未启动

[英]New Activity does not start

I'm new to programming, and trying to learn by following tutorials.我是编程新手,并尝试通过以下教程进行学习。 I was following one tutorial and came across one problem and don't know to resolve it.我正在学习一个教程,遇到了一个问题,但不知道如何解决。 In my MainActivity I'm trying to authenticate user by email and password.在我的 MainActivity 中,我试图通过电子邮件和密码对用户进行身份验证。 (works fine). (工作正常)。 After that HomenActivity supposed to start.在那之后 HomenActivity 应该开始。 Althought, for some reason it does not start.虽然,由于某种原因它没有启动。 Unfortunatly I'm unable to understend why.不幸的是,我无法理解为什么。 If you could point me in the right direction it would be much apreciated.如果你能指出我正确的方向,那将是非常感激的。

Thank you all in advance.谢谢大家。

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.firebase.ui.auth.AuthUI;

import com.firebase.ui.auth.IdpResponse;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import com.raindevteam.aservicetracking.Model.User;
import com.raindevteam.aservicetracking.Utils.Common;

import java.util.Arrays;
import java.util.List;

import io.paperdb.Paper;

import static java.sql.DriverManager.println;

public class MainActivity extends AppCompatActivity {

    DatabaseReference user_information;
    private static final int MY_REQUEST_CODE = 7117;
    List<AuthUI.IdpConfig> providers;

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

        Paper.init(this);

        user_information = FirebaseDatabase.getInstance().getReference(Common.USER_INFORMATION);

        providers = Arrays.asList(
                new AuthUI.IdpConfig.EmailBuilder().build(),
                new AuthUI.IdpConfig.GoogleBuilder().build()
                );

        Dexter.withActivity(this)
                .withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
                .withListener(new PermissionListener() {
            @Override
            public void onPermissionGranted(PermissionGrantedResponse response) {
                showSignInOption();
            }

            @Override
            public void onPermissionDenied(PermissionDeniedResponse response) {
                Toast.makeText(MainActivity.this, "You need to Accept permission",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {

            }
        }).check();
    }

    private void showSignInOption(){
        startActivityForResult(
                AuthUI.getInstance()
                        .createSignInIntentBuilder()
                        .setAvailableProviders(providers)
                        .build(),MY_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == MY_REQUEST_CODE){
            IdpResponse response = IdpResponse.fromResultIntent(data);
            if(requestCode == RESULT_OK){

                final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

                user_information.orderByKey()
                        .equalTo(firebaseUser.getUid())
                        .addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                if(dataSnapshot.getValue() == null){
                                    if(!dataSnapshot.child(firebaseUser.getUid()).exists()){
                                        Common.loggedUser = new User(firebaseUser.getUid(),firebaseUser.getEmail());
                                        //add to database
                                        user_information.child(Common.loggedUser.getUid())
                                                .setValue(Common.loggedUser);
                                    }
                                }
                                //if user exists
                                else{
                                    Common.loggedUser = dataSnapshot.child(firebaseUser.getUid()).getValue(User.class);

                                }

                                Paper.book().write(Common.USER_UID_SAVE_KEY, Common.loggedUser.getUid());
                                updateToken(firebaseUser);

                                setupUI();


                            }

                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {

                            }
                        });
            }
        }
    }

    private void setupUI(){

        startActivity(new Intent(MainActivity.this, HomeActivity.class));
        finish();
    }

    private void updateToken(final FirebaseUser firebaseUser){
        final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference(Common.TOKENS);

        FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
            @Override
            public void onSuccess(InstanceIdResult instanceIdResult) {
                tokens.child(firebaseUser.getUid()).setValue(instanceIdResult.getToken());

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(MainActivity.this,"Error"+e.getMessage(),Toast.LENGTH_SHORT).show();
            }
        });
    }
}

No error messages displayed.没有显示错误消息。

Would you try that?你会试试吗?

private void setupUI(){

    startActivity(new Intent(this, HomeActivity.class));
    finish();
}

I think your setupUI() is not running try printing Log.e .我认为您的 setupUI() 没有运行尝试打印 Log.e 。 Check if it is working or not.检查它是否工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM