我正在我的新Android应用程序中实施Firebase电子邮件/密码身份验证 .
该应用程序在大多数情况下工作正常,但当用户单击登录或注册的两个按钮之一时,应用程序会跳过所谓的活动,登录或注册,然后直接进入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'
-
甚至添加到了Internet权限的清单请求中
-
实施了firebases crashylytics并且它没有 grab 这个
-
重新添加了google.services.json文件,然后构建/重建项目
EDIT (根据要求提供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
2 回答
是的,因为这个,它直接进入主动:
onStart
这样做了:mAuth.addAuthStateListener(fireBaseStateListener);
所以它进入了Listener,因为你的代码中有这个:
它直接转到MainActivity.class
做这个:
你实现了
sharedpreference
吗?也许是因为sharedpreference
如果你为user session
实现了这个 . 如果你没有实现,那么尝试从RegistrationActivity
复制你的代码,然后创建新的Activity
并粘贴到那里 .