我的代码中的FirebaseAuth.getInstance获得了null返回值,导致我的应用无法运行。这是我的主要内容:
public class MainActivity extends AppCompatActivity {
//Firebase Auth
public static final int RC_SIGN_IN = 1;
//Cloud vision
private static final String CLOUD_VISION_API_KEY = "AIzaSyBHgLORJOy0BAp6PYL5DqX0hwQYAv8-3xE";
public static final String FILE_NAME = "temp.jpg";
private static final String ANDROID_CERT_HEADER = "X-Android-Cert";
private static final String ANDROID_PACKAGE_HEADER = "X-Android-Package";
//Cloud vision
private static final String TAG = MainActivity.class.getSimpleName();
private static final int GALLERY_PERMISSIONS_REQUEST = 0;
private static final int GALLERY_IMAGE_REQUEST = 1;
public static final int CAMERA_PERMISSIONS_REQUEST = 2;
public static final int CAMERA_IMAGE_REQUEST = 3;
//Cloud vision
private TextView mImageDetails;
private ImageView mMainImage;
//Firebase instance variables
//DATABASE
/*
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mPhotosDatabaseReference;
private DatabaseReference mVisionOutputDatabaseReference;
private DatabaseReference mUserFeedbackDatabaseReference;
*/
//AUTH
private FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
//Cloud vision
@Override
protected void onCreate(Bundle savedInstanceState) {
//Cloud vision
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Initialize Firebase
//Database
//mFirebaseDatabase = FirebaseDatabase.getInstance();
//Auth
mFirebaseAuth = FirebaseAuth.getInstance();
最后一行是我获得空回报的地方。
干杯。
答案 0 :(得分:2)
如果您没有互联网连接,则可以获得空值。如果连接速度很慢,可能无法立即使用。
答案 1 :(得分:0)
你添加了
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
/////////////////////////////////////////////////////////////////////////
////////////////
} else {
}
}
};
并在 onStart
中public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
答案 2 :(得分:0)
要获取mFirebaseAuth
对象,您需要在onStart
方法中添加一个像这样的监听器:mFirebaseAuth.addAuthStateListener(authListener);
。您需要声明private FirebaseAuth.AuthStateListener authListener;
而不是onCreate
方法添加此代码:
authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
// do stuff
}
}
};
希望它有所帮助!
答案 3 :(得分:0)
发现我的问题。我的数据库API包不是Firebase UI版本的正确版本。我从来没有检查过它,因为我专注于Auth部分。
答案 4 :(得分:0)
就我而言,我注意到此标签由于某些未知原因而重复!当我删除多余的东西时,一切都开始正常工作。
<meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar"/>
只是想分享这种经验,所以也许对其他人有帮助。我只是花了4个小时来解决这个问题:-/
答案 5 :(得分:0)
将此添加到清单中
<service android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data
android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" /> </service>
如果清单中存在相同的服务,则仅使用元数据标记。