Tôi đang tạo ứng dụng Android và hiện tôi đang cố triển khai xác thực người dùng bằng Firebase. Theo như tôi có thể nói, ứng dụng của tôi được kết nối với máy chủ Firebase của tôi.FirebaseApp không khởi chạy mặc dù FirebaseApp.initializeApp() đang được gọi trong lớp Ứng dụng
Tôi gặp phải lỗi thời gian chạy khi cố gắng chuyển từ hoạt động Đăng nhập sang hoạt động Đăng ký qua nút nhấn. Ứng dụng gặp sự cố và tôi gặp lỗi thời gian chạy.
Cho đến khi tôi có thể biết, lỗi thời gian chạy là từ cuộc gọi onCreate()
của hoạt động Đăng ký khi tôi cố gắng khởi tạo đối tượng FirebaseAuth
với FirebaseAuth.getInstance()
. Cuộc gọi này không thành công do số
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process seniordesign.phoneafriend. Make sure to call FirebaseApp.initializeApp(Context).
Tuy nhiên, tôi thực hiện cuộc gọi này trong phương thức ứng dụng 'onCreate()
mà tôi nghĩ sẽ ổn. Tôi đã thêm cuộc gọi initalizeApp()
vào cuộc gọi onCreate()
của Đăng ký nhưng không có súc sắc. Tôi đã tìm kiếm những người khác với vấn đề này nhưng không tìm thấy bất cứ điều gì tương tự. Cảm ơn vì bất kì sự giúp đỡ.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="seniordesign.phoneafriend">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name="seniordesign.phoneafriend.PhoneAFriend">
<activity android:name=".SignIn">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SignUp"></activity>
</application>
</manifest>
PhoneAFriend.java (lớp ứng dụng của tôi)
public class PhoneAFriend extends Application {
public void onCreate(){
super.onCreate();
Firebase.setAndroidContext(this);
FirebaseApp.initializeApp(this);
}
}
SignUp.java
public class SignUp extends AppCompatActivity {
protected Firebase ref;
protected EditText emailText;
protected EditText passText;
protected EditText confirmText;
protected Button button;
protected SignUp thisContext;
protected FirebaseAuth auth;
protected FirebaseAuth.AuthStateListener authListener;
private View.OnClickListener onClickListener;
public static Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
ref = new Firebase("https://phoneafriend-7fb6b.firebaseio.com");
emailText = (EditText) findViewById(R.id.signup_emailText);
passText = (EditText) findViewById(R.id.signup_passwordText);
confirmText = (EditText) findViewById(R.id.signup_passwordConfirm);
intent = new Intent(this, SignIn.class);
//Tried this already
//FirebaseApp.initializeApp(this);
auth = FirebaseAuth.getInstance();
button = (Button) findViewById(R.id.signup_button);
onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
createUser(view);
Log.v("SignUp Button" , "Clicked; Attempting to create user");
}
};
button.setOnClickListener(onClickListener);
authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d("FirebaseAuth", "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d("FirebaseAuth", "onAuthStateChanged:signed_out");
}
// ...
}
};
thisContext = this;
}
@Override
public void onStart(){
super.onStart();
//auth.addAuthStateListener(authListener);
}
@Override
public void onStop(){
super.onStop();
if(authListener != null) {
//auth.removeAuthStateListener(authListener);
}
}
protected void createUser(View view){
String cString = null;
String pString = null;
String eString = emailText.getText().toString();
if(passText.getText() != null && confirmText.getText() != null) {
pString = passText.getText().toString();
cString = confirmText.getText().toString();
Log.v("SignUP: Pass Null check" , "Pass");
if (emailText.getText() != null && pString.equals(cString) && passText.getText() != null) {
Log.v("SignUP: Sign up check " , "Pass");
auth.createUserWithEmailAndPassword(emailText.getText().toString() , passText.getText().toString())
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.v("createUser complete" , "status: " + task.isSuccessful());
if(task.isSuccessful()){
startActivity(SignUp.intent);
}
}
});
}
}
return;
}
}
Bạn đang trộn các cuộc gọi API từ phiên bản 2.x.x cũ. SDK với SDK 9.x.x mới, Chúng không tương thích. Bạn chỉ nên sử dụng SDK mới. Xem câu trả lời có liên quan này: http://stackoverflow.com/a/39321686/4815718 –