2016-05-23 10 views
6

का अनुरोध करते समय फायरबेज स्टोरेज अज्ञात त्रुटि लौट रहा है मैं एक छवि को खींचने की कोशिश कर रहा हूं जिसे मैंने एंड्रॉइड डिवाइस पर अपने फायरबेस स्टोरेज में जोड़ा है। हर बार जब यह चलता है मुझे इस त्रुटि को ऑनफाइल श्रोता से प्राप्त होता है:छवि

ई/स्टोरेज अपवाद (9646): एक अज्ञात त्रुटि आई, कृपया HTTP परिणाम कोड और सर्वर प्रतिक्रिया के लिए आंतरिक अपवाद की जांच करें। ई/StorageException (9646): कोड: -13,000 HttpResult: 0

मैं भी समय लगता है कि समस्या नहीं है बनाने के लिए किया जा रहा है के लिए पढ़ने/लिखने की है, भंडारण अनुमतियों को बदल दिया है।

किसी भी मदद के लिए अग्रिम धन्यवाद।

final ImageView test = (ImageView) findViewById(R.id.test_image); 
StorageReference ref = storage.getReferenceFromUrl("gs://my-project.appspot.com/test_image.png"); 
    ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
     @Override 
     public void onSuccess(Uri uri) { 
      Log.d(TAG, "Successfully loaded uri"); 
      test.setImageURI(uri); 
     } 
    }).addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception e) { 
      Log.d(TAG, "Failed loaded uri: " + e.getMessage()); 
     } 
    }); 
+0

क्या आप वास्तव में उस कोड को ठीक से चला रहे हैं, या आपने अपनी वास्तविक "बाल्टी" ("projectid.appspot.com" जैसे कुछ) और छवि के पथ के साथ "gs: //bucket/image.png" को बदल दिया है? –

+0

हाँ मैंने इसे अपने वास्तविक बाल्टी नाम और फ़ाइल के साथ बदल दिया है। उस बिंदु को बेहतर ढंग से प्रतिबिंबित करने के लिए कोड संपादित किया गया। – johnsoe

+0

क्या आप इंगित कर सकते हैं कि आंतरिक अपवाद संग्रहण अपवाद के भीतर क्या है? मैंने अभी देखा है कि httpresult शून्य है। यह डाउनलोड यूआरएल कभी नहीं बनाया गया अनुरोध प्राप्त करने का सुझाव देता है। ऐसा करने का एक तरीका यह है कि यदि आपके फोन पर प्ले सेवाएं अपडेट नहीं की जाती हैं। आपको पता चलेगा कि यह त्रुटि है क्योंकि adb logcat "स्टोरेज नेटवर्क परत लोड नहीं किया जा सका" के प्रभाव में कुछ के साथ एक त्रुटि दिखाएगा। –

उत्तर

5

मैंने अभी देखा है कि httpresult शून्य है। यह डाउनलोड यूआरएल कभी नहीं बनाया गया अनुरोध प्राप्त करने का सुझाव देता है। ऐसा करने का एक तरीका यह है कि यदि आपके फोन पर प्ले सेवाएं अपडेट नहीं की जाती हैं। आपको पता चलेगा कि यह त्रुटि है क्योंकि adb logcat "स्टोरेज नेटवर्क परत लोड नहीं किया जा सका" के प्रभाव में कुछ के साथ एक त्रुटि दिखाएगा।

इसे ठीक करने के लिए, अपने फोन पर प्ले सेवाएं अपडेट करें। ऐसा करने के कुछ तरीके हैं। मुझे प्ले स्टोर में प्ले सेवाओं को देखने के लिए ऐप "प्ले सेवाएं जानकारी" इंस्टॉल करना सबसे आसान लगता है, और फिर उपलब्ध होने पर अपडेट हिट करें।

+0

यह मुद्दा था! धन्यवाद। – johnsoe

2

मैं एक ही समस्या थी, इस के लिए समाधान है:

  • एक भंडारण संदर्भ बनाने ->
StorageReference storageRef = storage.getReferenceFromUrl("gs:<bucket address>"); 
  • भंडारण संदर्भ के लिए एक बच्चे को बनाने के

StorageReference spaceRef = storageRef.child("child name");

0

आप इस से बचने के लिए तिथि Google Play सेवाओं के लिए ऊपर की आवश्यकता है।

इसके अलावा, फायरबेस कंसोल में अनाम प्रमाणीकरण सक्षम करें।

3

अपने डिवाइस पर Google Play Services अपडेट करें, आपके ग्रेडल स्क्रिप्ट में नहीं (हालांकि ऐसा भी है)।

दीवार के खिलाफ अपने सिर को लगभग एक घंटे तक टक्कर देने के बाद केवल बेंजामिन-वुल्फ के जवाब के साथ-साथ इंटरनेट पर दूसरों को छोड़कर, मैं वापस आया और इसे सावधानीपूर्वक पढ़ा। उम्मीद है कि इससे दूसरों को मेरी गलती से बचने में मदद मिलेगी!

0

क्विकस्टार्ट फ़ायरबेस स्टोरेज नमूना का उपयोग करते समय मुझे एक ही समस्या थी। समस्या यह थी कि ऐप एंड्रॉइड एम पर स्टोरेज के लिए रनटाइम अनुमतियों का अनुरोध नहीं कर रहा था। इसलिए स्टोरेज अनुमतियों की जांच करने का प्रयास करें।

0

मेरे मामले में, मैं से डाउनलोड URL नहीं StorageRef का निर्माण कर रहा संग्रहण स्थान साथ।

String storageLocation="gs://bbeplayer.appspot.com/heart.png"; 
    String downloadURL="https://firebasestorage.googleapis.com/v0/b/bbeplayer.appspot.com/o/heart.png?alt=media&token=41a22961-daf1-433e-a580-e65144d34ab3"; 
    StorageReference reference; 
reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL); 

तो मैं reference=FirebaseStorage.getInstance().getReferenceFromUrl(downloadURL);

बदल

reference=FirebaseStorage.getInstance().getReferenceFromUrl(storageLocation); 
-1

आप के साथ और अधिक आकार KB एक और फाइल को अपलोड करने के लिए की जरूरत है, मेरे लिए काम thats!