2016-09-26 8 views
11

में बुलाया जाने के बावजूद प्रारंभ नहीं हो रहा है, मैं एक एंड्रॉइड एप्लिकेशन बना रहा हूं और मैं वर्तमान में फ़ायरबेस का उपयोग कर उपयोगकर्ता प्रमाणीकरण को लागू करने की कोशिश कर रहा हूं। जहां तक ​​मैं कह सकता हूं, मेरा ऐप मेरे फायरबेस सर्वर से जुड़ा हुआ है।FirebaseApp FirebaseApp.initializeApp() को एप्लिकेशन क्लास

मुझे एक बटन प्रेस के माध्यम से साइनइन गतिविधि में साइनइन गतिविधि से स्विच करने का प्रयास करते समय रनटाइम त्रुटि का सामना करना पड़ता है। ऐप क्रैश हो जाता है और मुझे रनटाइम त्रुटि मिलती है।

जहां तक ​​मैं बता सकता हूँ, रनटाइम त्रुटि जब मैं FirebaseAuth.getInstance() के साथ एक FirebaseAuth वस्तु को प्रारंभ करने का प्रयास पंजीकरण गतिविधि के onCreate() कॉल से है। इस कॉल की वजह से

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process seniordesign.phoneafriend. Make sure to call FirebaseApp.initializeApp(Context). 

विफल रहता है फिर भी, मैं अपने आवेदन वर्ग 'onCreate() विधि है जो मैंने सोचा था कि ठीक होगा में यह कॉल करने के। मैंने initalizeApp() को साइनअप के onCreate() कॉल पर कॉल किया लेकिन कोई पासा नहीं जोड़ा। मैंने इस मुद्दे के साथ दूसरों की तलाश की है लेकिन मुझे कुछ भी समान नहीं मिला है। किसी भी मदद के लिए धन्यवाद।

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 (मेरे आवेदन वर्ग)

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; 
    } 
} 
+0

आप विरासत 2.x.x से एपीआई कॉल मिश्रण कर रहे हैं। नए 9.x.x एसडीके के साथ एसडीके, वे संगत नहीं हैं। आपको केवल नए एसडीके का उपयोग करना चाहिए। इस संबंधित उत्तर को देखें: http://stackoverflow.com/a/39321686/4815718 –

उत्तर

5

बस के रूप में qbix कहा गया है, आप ज्यादा का उपयोग API कॉल आप जो भी संस्करण उपयोग करने जा रहे हैं उससे। यदि संभव हो, तो आपको नए एपीआई का उपयोग करना चाहिए क्योंकि यह भविष्य में निश्चित रूप से और अधिक समर्थित होगा।

यहाँ डॉक्स देखें:

https://firebase.google.com/docs/database/android/start/

निकालें:

Firebase.setAndroidContext(this); 
FirebaseApp.initializeApp(this); 

और डाल:

FirebaseDatabase database = FirebaseDatabase.getInstance(); 

qbix एक जवाब में अपनी टिप्पणी डालता है, तो आप को स्वीकार करना चाहिए उसके मेरे देखने के बजाए उसने कुछ मिनटों से मुझे कैसे हराया।

इसके अलावा:

यदि आप हैं वर्ष firebase का उपयोग कर और मदद स्विचिंग की जरूरत है, इस गाइड पर जगह है और स्विच के साथ तुम्हारी मदद करेगा। यह एक काफी सरल स्विच है।

https://firebase.google.com/support/guides/firebase-android

+0

'क्लासपाथ' com.google.gms: Google- सेवाएं: 3.0.0'' प्रोजेक्ट ग्रेडल के लिए। 'compile' com.google.android.gms: play-services: 9.8.0 ' संकलन' com.google.firebase: फ़ायरबेस-कोर: 9.8.0 '' ऐप ग्रेडल के लिए लेकिन मुझे अभी भी समस्या मिलती है। कोई उपाय? – Si8

+0

टिप्पणी से ऊपर इस समस्या को हल करें –

8

मैं वहाँ पहले से ही एक स्वीकृत उत्तर जानते हैं। हालांकि, मैं एक ही त्रुटि संदेश में भाग गया: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process (name). Make sure to call FirebaseApp.initializeApp(Context). मैंने एसओ पर कई समाधानों की कोशिश की, और सब कुछ जांचने तक, जब तक कि मुझे अंत में नहीं मिला कि फायरबेस कंसोल में परिभाषित पैकेज नाम मेरे मैनिफेस्ट में परिभाषित पैकेज नाम से मेल नहीं खाता फ़ाइल।

अपने फ़ायरबेस कंसोल पर जाएं -> परियोजना सेटिंग्स -> जांचें कि पैकेज नाम मेल खाते हैं या नहीं।

आशा है कि यह मदद मिल सकती है कुछ :)

0

यह Firebase जादूगर कि एंड्रॉयड स्टूडियो में शामिल है का उपयोग करना आसान है: यह Gradle फ़ाइलों में सभी निर्भरता कहते हैं, firebase परियोजना बनाता है अगर जरूरत , प्रोजेक्ट के साथ ऐप को जोड़ता है, आदि

एंड्रॉइड स्टूडियो में मेनू टूल्स/फायरबेस और निर्देशों का पालन करें।

फिर FirebaseApp.initializeApp() मान्य मान वापस कर देगा।

+1

हम में से कुछ Xamarin जैसी चीजों का उपयोग कर रहे हैं, इसलिए फ़ायरबेस विज़ार्ड जैसी कोई चीज़ नहीं है। –

संबंधित मुद्दे