2011-03-09 23 views
7

मेरा एप्लिकेशन एसडीकार्ड में गाने की सूची दिखाता है, और एसडी कार्ड से गीत को हटाने का विकल्प है।एंड्रॉइड मीडिया डेटाबेस को अपडेट करने के लिए कैसे करें

जब भी गीत हटा दिया जाता है तब भी गीत मेरी एप्लिकेशन सूची में आता है।

मैं एंड्रॉइड मीडिया डेटाबेस कैसे अपडेट कर सकता हूं और अद्यतन डेटाबेस दिखा सकता हूं?

उत्तर

20

एंड्रॉइड में ऐसे प्रकार का कैश है जो मीडिया फ़ाइलों का ट्रैक रखता है।

इस प्रयास करें:

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

यह फिर से MediaScanner सेवा रन बनाता है, जो डिवाइस का कैश से हटा गीत निकाल देना चाहिए।

तुम भी अपने AndroidManifest.xml को यह अनुमति जोड़नी होगी:

<intent-filter> 
    <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
    <data android:scheme="file" /> 
</intent-filter> 
+0

उत्तर के लिए धन्यवाद लेकिन अब मुझे एक खाली स्क्रीन मिल रही है और लॉग बिल्ली 03-10 02: 24: 08.222 दिखाती है: ERROR/MediaScannerService (401): फ़ाइल /data/data/com.androi को हटाने में विफल d.providers.media/pause_scan मुझे लगता है कि जब मैं अपना कोड doInBackground – abhishek

+0

में डालता हूं तो कोड कभी भी एसिंक कार्य पर पोस्ट नहीं करता है ठीक है तो रिक्त स्क्रीन हो सकती है क्योंकि मेरा कनेक्शन प्रकार डिस्क ड्राइव था। लेकिन फिर भी समस्या से संबंधित है कि मुझे गाने की सूची मिल रही है और इसे अपडेट नहीं किया गया है – abhishek

+0

ठीक है मुझे यह मिला ... मैं इस चीज़ को और बदसूरत नहीं बना सका। मेरी सामग्री करते समय मैंने प्रेषित ब्रॉडकास्ट सामग्री पर टिप्पणी की :) लेकिन फिर भी मुझे – abhishek

1

नीचे केवल emulators पर परीक्षण किया गया था। समाधान 2.2 और 2.3 पर काम करता है, लेकिन नहीं 4. 4 एंड्रॉयड एमुलेटर पर किए गए इस कार्य LogCat में संदेश के साथ कुछ नहीं करता है:

अनुमति इनकार: प्रसारण आशय

दुर्भाग्य के लिए मीडिया भंडारण अद्यतन करने के लिए जिस तरह से नहीं मिला था एंड्रॉइड 4 एंड्रॉइड पर परीक्षण नहीं किया 3.

त्रुटि 2.3.3 इंटेल छवि में भी होती है। असली उपकरणों पर जांच नहीं है।

4

आईसीएस से पहले एंड्रॉयड के लिए, एक ACTION_MEDIA_MOUNTED प्रसारण भेजें:

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

आईसीएस के लिए और Jelly Bean, आप मीडिया फ़ाइलों

4

गैलरी ताज़ा स्कैन करने के लिए एंड्रॉयड किटकैट

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
{ 
     Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     File f = new File("file://"+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)); 
     Uri contentUri = Uri.fromFile(f); 
     mediaScanIntent.setData(contentUri); 
     this.sendBroadcast(mediaScanIntent); 
} 
else 
{ 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 
} 
सहित MediaScannerConnection एपीआई का उपयोग कर सकते हैं
+0

किसी भी तरह से यह एंड्रॉइड 6 (मार्शमलो) पर मेरे लिए काम नहीं किया ... कोई विचार? – Taifun

+1

marshmallow के लिए आपको फोन स्टोरेज में लिखने के लिए रनटाइम अनुमति प्राप्त करने की आवश्यकता है @Taifun –

+0

धन्यवाद @ karthikvishnukumar, अब मैं [इस समाधान] का उपयोग कर रहा हूं (http://stackoverflow.com/a/5815005/1545993) सफलतापूर्वक – Taifun

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