2011-08-12 18 views
7

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

उत्तर

8

फ़ाइलों को सूचीबद्ध करते समय फ़ाइल नाम फ़िल्टर का उपयोग करें। नीचे दिए गए नमूना बाहर सूचीबद्ध करता है एक दिया root निर्देशिका में सभी एमपी 3 फ़ाइलें (नोट - नीचे कोड root के तहत सभी फ़ोल्डरों के लिए रिकर्सिवली यह ऐसा नहीं करता है) -

String files[] = root.list(audioFilter); 

FilenameFilter audioFilter = new FilenameFilter() { 
    File f; 
    public boolean accept(File dir, String name) { 
    if(name.endsWith(".mp3") || name.endsWith(".MP3")) { 
      return true; 
     } 
     f = new File(dir.getAbsolutePath()+"/"+name); 

     return f.isDirectory(); 
    } 
}; 
+0

बहुत बहुत धन्यवाद। अब मैं इसे सब-फ़ोल्डरों में सभी फाइलें प्राप्त करने की कोशिश कर रहा हूं, और यह केवल समय की बात है। –

+0

मुझे लगता है कि स्ट्रिंग चेक बेहतर होना चाहिए: name.length()> = 4 && name.subString (name.length-4) .toLowerCase()। बराबर ("एमपी 3"), या ऐसा कुछ (चेक नहीं किया गया) । कारण यह है कि आपको इस तरह से एक से अधिक बार स्ट्रिंग पर जाने की आवश्यकता नहीं होगी। –

1

मुझे नहीं पता कि आप कौन से फाइलब्रोसर कार्यान्वयन का उपयोग कर रहे हैं लेकिन एक अच्छा व्यक्ति को FileFilter स्वीकार करना चाहिए। आप अपने खुद के फ़िल्टर को कोड प्रदान कर सकते हैं public abstract boolean accept (File pathname)

+0

रवि तेजी से था, लेकिन धन्यवाद करने के लिए आप के लिए। –

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