2013-07-09 6 views
7

मैं कुछ फाइलें डाउनलोड करना चाहता हूं और उन्हें फोन/टैब के आंतरिक भंडारण में सहेजना चाहता हूं। सैमसंग गैलेक्सी नोट 2 और गैलेक्स टैब 10.1 पर कोशिश की। जब मैं उन पर /storage/sdcard0/ का उपयोग करता हूं तो कोड सफलतापूर्वक चलता है लेकिन जब मैं Galaxy Nexus 3 का उपयोग करता हूं तो कोड विफल हो जाता है।एंड्रॉइड बाहरी संग्रहण प्राप्त करना पूर्ण पथ

मैं दुश्मन या टैब के आंतरिक भंडारण 'Absolute Path का पूर्ण पथ प्राप्त करना चाहता हूं।

क्या यह संभव है, यदि ऐसा है तो कैसे?

+0

यह प्रश्न आंतरिक/बाहरी के बीच काफी उलझन में है, इसलिए ** कृपया इसे किसी भी चीज़ के लिए डुप्लिकेट के रूप में कभी भी प्रस्तावित न करें **। –

उत्तर

25

जब मैं का उपयोग करें/भंडारण/sdcard0

जरूरत/उन पर कोड सफलतापूर्वक चलता लेकिन जब मैं गैलेक्सी नेक्सस 3 का उपयोग कोड विफल रहता है।

/storage/sdcard0/ आंतरिक संग्रहण नहीं है। यह बाहरी भंडारण है।

(btw, कोई "आकाशगंगा नेक्सस 3" नाम डिवाइस नहीं है के बाद से, मैं यह सोचते हैं कि आप बस मतलब था "आकाशगंगा नेक्सस")

पर अपने अनुप्रयोग के लिए आंतरिक भंडारण स्थान ढूंढने के लिए, getFilesDir() उपयोग करते हैं, किसी भी Context (जैसे आपका Activity के रूप में पर कहा जाता है, एक File वस्तु प्राप्त करने के लिए।

पर बाहरी भंडारण आपके ऐप्लिकेशन की अनन्य एक स्थान पाने के लिए, किसी भी Context (जैसे आपका Activity रूप getExternalFilesDir(), पर कहा जाता है का उपयोग करें, एक पाने के लिए File वस्तु।

पर फ़ाइलों (उदा, सिनेमा) के सामान्य प्रकार के लिए बाहरी भंडारण एक मानक स्थान पाने के लिए, Environment पर getExternalStoragePublicDirectory() का उपयोग करें।

जड़ की बाहरी भंडारण पाने के लिए, Environment पर getExternalStorageDirectory() का उपयोग करें। हालांकि, इसे आजकल मैला प्रोग्रामिंग माना जाता है, क्योंकि यह डेवलपर्स को यादृच्छिक स्थानों में फ़ाइलों को रखने के लिए प्रोत्साहित करता है।

+0

मैं एंड्रॉइड प्रोग्रामिंग पर नया हूं। मैं फ़ाइलों को भंडारण में सहेजता हूं।उदाहरण के लिए जब मैं अपने गैलेक्सी नोट 2/स्टोरेज/एसडीकार्ड 0/पर देखता हूं, मुझे व्हाट्सएप, संगीत, अलार्म sth .. मैं सभी फोन/टैब के लिए/संग्रहण/sdcard0/पथ कैसे प्राप्त कर सकता हूं। धन्यवाद। –

+2

@ ErdinçÖzdemir: 'पर्यावरण' पर 'getExternalStorageDirectory()' का उपयोग करें। हालांकि, इसे आजकल मैला प्रोग्रामिंग माना जाता है, क्योंकि यह डेवलपर्स को यादृच्छिक स्थानों में फ़ाइलों को रखने के लिए प्रोत्साहित करता है। साथ ही, * विशिष्ट * पथ जो बाह्य भंडारण का प्रतिनिधित्व करता है निर्माता और ओएस संस्करण द्वारा भिन्न होता है। यही कारण है कि आप बाह्य भंडारण पर स्थानों को खोजने के लिए हार्ड-कोडेड तारों के बजाय विधियों का उपयोग करते हैं। – CommonsWare

+0

@ कॉमन्सवेयर: मेरे एलजी ऑप्टिमस डिवाइस पर आंतरिक स्टोरेज है और यह **/स्टोरेज/एसडीकार्ड 0/** तक आंतरिक स्टोरेज को इंगित करता है, मैंने इसे फाइल मैनेजर के माध्यम से चेक किया .... तो यह थोड़ा उलझन में है कि क्या sdcard0 आंतरिक या बाहरी बिंदु – Shashank

7

कोड से /storage/sdcard0/ पथ प्राप्त करने के लिए आप Environment.getExternalStorageDirectory() का उपयोग क्यों नहीं कर सकते? अनुमतियां जोड़ने के लिए और साथ ही

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
1

समाधान पाया 1 संपादित एमुलेटर है:

  1. जाओ वर्चुअल डिवाइस प्रबंधक Android और फिर एमुलेटर संपादित
  2. सेट कहते हैं कि सम्मान एमुलेटर के लिए एसडी घ कार्ड के लिए 100 MB करने के लिए, ठीक है का कहना है कि
  3. सहेजें और बंद एमुलेटर और शुरू

यह मेरे लिए काम किया, अभी तक ऐप्स एक त्रुटि दे रही है नहीं है और ठीक काम कर रहा है।

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