Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 登录成功后如何返回MainActivity?_Java_Android_Firebase_Android Intent_Firebase Authentication - Fatal编程技术网

Java 登录成功后如何返回MainActivity?

Java 登录成功后如何返回MainActivity?,java,android,firebase,android-intent,firebase-authentication,Java,Android,Firebase,Android Intent,Firebase Authentication,登录成功后,将返回Main2Activity,我可以反复登录。但在关闭并从最近的列表中删除应用程序后,将再次启动该应用程序。它将在MainActivity中启动。如果条件为true,则如何在之后直接将Main2Activity导航到MainActivity Main2活动代码 public class Main2Activity extends AppCompatActivity { private static final String TAG = "Main2Activity";

登录成功后,将返回Main2Activity,我可以反复登录。但在关闭并从最近的列表中删除应用程序后,将再次启动该应用程序。它将在MainActivity中启动。如果条件为true,则如何在之后直接将Main2Activity导航到MainActivity

Main2活动代码

public class Main2Activity extends AppCompatActivity {

    private static final String TAG = "Main2Activity";
    int AUTHUI_REQUEST_CODE = 1001;

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

        if (FirebaseAuth.getInstance().getCurrentUser() != null) {
            startActivity(new Intent(this, MainActivity.class));
            this.finish();
        }
    }

    public void loginRegister(View view) {

        List<AuthUI.IdpConfig> providers = Arrays.asList(
                new AuthUI.IdpConfig.EmailBuilder().build(),
                new AuthUI.IdpConfig.GoogleBuilder().build(),
                new AuthUI.IdpConfig.PhoneBuilder().build()
        );

        Intent intent = AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls("https://example.com","https://example.com")
                .setLogo(R.drawable.i789)
                .build();

        startActivityForResult(intent, AUTHUI_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == AUTHUI_REQUEST_CODE){
            if (requestCode == RESULT_OK){
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                Log.d(TAG, "onActivityResult: "+ user.getEmail());
                if (user.getMetadata().getCreationTimestamp() == user.getMetadata().getLastSignInTimestamp()){
                    Toast.makeText(this, "Welcome", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this, "Welcome back again", Toast.LENGTH_SHORT).show();
                }
            Intent t = new Intent(this,MainActivity.class);
             startActivity(t);
             this.finish();

        }else{
                IdpResponse response =IdpResponse.fromResultIntent(data);
                if (response == null){
                    Log.d(TAG, "onActivityResult: the user has cancelled the sign in request");
                }else {
                    Log.e(TAG, "onActivityResult: ",response.getError() );
                }

            }
        }
    }
}
公共类Main2活动扩展了AppCompative活动{
私有静态最终字符串TAG=“Main2Activity”;
int AUTHUI_请求_代码=1001;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
如果(FirebaseAuth.getInstance().getCurrentUser()!=null){
startActivity(新意图(this,MainActivity.class));
这个;
}
}
公共无效登录注册表(视图){
列表提供程序=Arrays.asList(
新建AuthUI.IdpConfig.EmailBuilder().build(),
新建AuthUI.IdpConfig.GoogleBuilder().build(),
新建AuthUI.IdpConfig.PhoneBuilder().build()
);
Intent=AuthUI.getInstance()
.CreateSignInEntBuilder()
.setAvailableProviders(提供程序)
.setTosAndPrivacyPolicyUrls(“https://example.com","https://example.com")
.setLogo(R.drawable.i789)
.build();
startActivityForResult(意图、授权请求代码);
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==AUTHUI\u请求\u代码){
if(requestCode==结果_确定){
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
Log.d(标记为“onActivityResult:+user.getEmail());
if(user.getMetadata().getCreationTimestamp()==user.getMetadata().getLastSignInTimestamp()){
Toast.makeText(这是“欢迎”,Toast.LENGTH_SHORT).show();
}否则{
Toast.makeText(这是“欢迎再次光临”,Toast.LENGTH_SHORT).show();
}
Intent t=新Intent(此,MainActivity.class);
星触觉(t);
这个;
}否则{
IdResponse-response=IdResponse.fromResultIntent(数据);
如果(响应==null){
Log.d(标记“onActivityResult:用户已取消登录请求”);
}否则{
Log.e(标记“onActivityResult:”,response.getError());
}
}
}
}
}
代码-主要活动

public class MainActivity extends AppCompatActivity implements FirebaseAuth.AuthStateListener {
    private static final String TAG = "MainActivity";

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

        private void startLogin(){
                Intent intent = new Intent(this,Main2Activity.class);
                startActivity(intent);
                finish();
        }

    public void signout(View view){
     AuthUI.getInstance().signOut(this);

    }

    @Override
    protected void onStart() {
        super.onStart();
        FirebaseAuth.getInstance().addAuthStateListener(this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        FirebaseAuth.getInstance().removeAuthStateListener(this);
    }

    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        if (firebaseAuth.getCurrentUser() == null){
            startLogin();
            return;
        }
        firebaseAuth.getCurrentUser().getIdToken(true)
                .addOnSuccessListener(new OnSuccessListener<GetTokenResult>() {
                    @Override
                    public void onSuccess(GetTokenResult getTokenResult) {
                        Log.d(TAG, "onSuccess: "+getTokenResult.getToken());
                    }
                });
    }
}

公共类MainActivity扩展AppCompatActivity实现FirebaseAuth.AuthStateListener{
私有静态最终字符串TAG=“MainActivity”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
私有void-ogin(){
意向意向=新意向(此,Main2Activity.class);
星触觉(意向);
完成();
}
公共作废注销(视图){
AuthUI.getInstance();
}
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseAuth.getInstance().addAuthStateListener(此);
}
@凌驾
受保护的void onStop(){
super.onStop();
FirebaseAuth.getInstance().removeAuthStateListener(此);
}
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
如果(firebaseAuth.getCurrentUser()==null){
startogin();
返回;
}
firebaseAuth.getCurrentUser().getIdToken(true)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(GetTokenResult GetTokenResult){
Log.d(标记“onSuccess:+getTokenResult.getToken());
}
});
}
}

我建议您创建一个启动屏幕(启动屏幕),该屏幕将在启动时首先检查用户是否从服务器登录进行身份验证。所有这些都将在后台线程中处理,ui线程将执行启动屏幕动画(如果您愿意的话)。因此,如果用户已登录,则导航到mainActivity,否则导航到loginActivity。希望这对你有帮助