我正在将Firebase电子邮件/密码身份验证实施到新的android应用中。
该应用程序在大多数情况下都能正常运行,不同之处在于,当用户单击登录或注册这两个按钮之一时,该应用程序会跳过假定的活动,登录或注册,并直接进入mainActivity。
这是我写意图打开下一个活动的方式:-
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ChooseLogin.this, RegistrationActivity.class);
startActivity(intent);
finish();
return;}});
我在调试中发现了两个可能与之相关的错误:-
W / zygote64:由于无法识别类加载器而跳过重复的类检查W / DynamiteModule:找不到com.google.firebase.auth的本地模块描述符类。
以及:-
W / DynamiteModule:找不到com.google.android.gms.crash的本地模块描述符类。
根据与我类似的问题的答案,我有:
与Firebase助手核对后说我已连接。
检查在Firebase控制台中我是否启用了电子邮件/密码登录
在我的设备和仿真器上进行了检查,并且在两者上的行为均相同
检查我是否使用了最新的'com.google.firebase:firebase-auth:11.6.0'
检查Google Play服务是否正常'classpath'com.google.gms:google-services:3.1.0'
甚至添加到清单请求中以获取互联网许可
实施firebases crashylytics,并且无法捕获
重新添加google.services.json文件,然后构建/重建项目
编辑(根据请求registrationActivity和logcat):
registrationActivity的onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAuth = FirebaseAuth.getInstance();
fireBaseStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
return;}};
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(fireBaseStateListener);
}
Logcat:
11-23 11:58:59.652 12880-12880/com.sanruza.alpak.tinderlike I/zygote64: Late-enabling -Xcheck:jni
11-23 11:59:00.016 12880-12880/com.sanruza.alpak.tinderlike W/zygote64: Skipping duplicate class check due to unrecognized classloader
11-23 11:59:00.020 12880-12880/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.027 12880-12880/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.048 12880-12880/com.sanruza.alpak.tinderlike I/BiChannelGoogleApi: [FirebaseAuth: ] No Fallback module; NOT setting up for lazy initialization
11-23 11:59:00.091 12880-12914/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.104 12880-12914/com.sanruza.alpak.tinderlike I/FirebaseAuth: [FirebaseAuth:] Loading module via FirebaseOptions.
11-23 11:59:00.104 12880-12914/com.sanruza.alpak.tinderlike I/FirebaseAuth: [FirebaseAuth:] Preparing to create service connection to gms implementation
11-23 11:59:00.118 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Considering local module com.google.android.gms.flags:2 and remote module com.google.android.gms.flags:0
11-23 11:59:00.118 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Selected local version of com.google.android.gms.flags
11-23 11:59:00.148 12880-12917/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.android.gms.crash not found.
11-23 11:59:00.156 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Considering local module com.google.android.gms.crash:0 and remote module com.google.android.gms.crash:10
11-23 11:59:00.157 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Selected remote version of com.google.android.gms.crash, version >= 10
11-23 11:59:00.162 12880-12880/com.sanruza.alpak.tinderlike V/FA: Cancelling job. JobID: -385218149
11-23 11:59:00.171 12880-12880/com.sanruza.alpak.tinderlike V/FA: Registered activity lifecycle callback
11-23 11:59:00.172 12880-12880/com.sanruza.alpak.tinderlike I/FirebaseInitProvider: FirebaseApp initialization successful
11-23 11:59:00.205 12880-12921/com.sanruza.alpak.tinderlike V/FA: Collection enabled
是的,由于以下原因,它直接进入了mainactivity:
mAuth = FirebaseAuth.getInstance();
fireBaseStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
return;}};
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(fireBaseStateListener);
}
onStart
这个完成了: mAuth.addAuthStateListener(fireBaseStateListener);
因此它正在进入侦听器,并且由于您的代码中包含以下内容:
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivty(intent);
它直接进入MainActivity.class
做这个:
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if(user!=null){ //if user is signed in
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
else{
Log.i("sign in", not signed in);
}};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句