2012-11-30 15 views
6

में आमंत्रित करना मुझे केवल एक निर्देशिका स्कैन करने के लिए MediaScanner प्राप्त करने का प्रयास करने में समस्या है।मीडियास्केनर को केवल एक ही निर्देशिका (एंड्रॉइड)

मेरा ऐप चित्र लेता है, और उन्हें एसडी कार्ड/डीसीआईएम/ऐपचित्रों/पर सहेजता है, और स्पष्ट रूप से मुझे गैलरी ऐप में दिखाने के लिए मीडियास्केनर को आमंत्रित करने की आवश्यकता है। निम्नलिखित कोड मेरे उद्देश्य के लिए काम करता है:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

लेकिन यह इतना बेकार लगता है! जब मैं जानता हूं कि फाइलें कहां हैं, तो मैं पूरे एसडीकार्ड को स्कैन करने की कोशिश कर रहे संसाधनों का उपयोग नहीं करना चाहता हूं। मैंने निम्नलिखित भी कोशिश की है:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory+"/DCIM/AppPictures/"))); 

लेकिन यह कोई परिणाम देने में विफल रहता है। क्या कोई मुझे यह करने के लिए उचित तरीके से बता सकता है?

उत्तर

0

मेरे ऐप में, मैं चित्र डाउनलोड भी कर रहा हूं।

जब मेरी मुख्य गतिविधि (जो चित्र डाउनलोड करती है) शुरू होती है, तो मैं एक मध्यस्थ कनेक्शन शुरू करता हूं। डाउनलोड अनुक्रमिक है, एक बार एक तस्वीर आ गया है, मैं एक स्ट्रिंग (currentFile नीचे नाम) और में फ़ाइल नाम की दुकान "कनेक्ट" मीडिया स्कैनर:

:

public class SomeActivity 
      extends Activity implements MediaScannerConnectionClient { 

    .... 

    protected MediaScannerConnection mMs; 

    .... 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     .... 
     mMs = new MediaScannerConnection(this, this); 
     .... 
    } 

    @Override 
    public void onMediaScannerConnected() { 
     mMs.scanFile(currentFile, null); 
    } 

    @Override 
    public void onScanCompleted(String path, Uri uri) { 
     mMs.disconnect(); 
    } 


} 

स्कैनिंग मैं सिर्फ करना लॉन्च करने के लिए

currentFile = "/mnt/sdcard/someLocationToScan/somefile.jpg"; 
mMs.connect(); 
1
public static void ScanMyFile(String strFilePath) { 
    // Tell the media scanner so it is available to the user. 
    MediaScannerConnection.scanFile(null, new String[] { strFilePath }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
       } 
      }); 
}