/* * add by chenjd, chenjd@allwinnertech.com 20110919 * when a file is created,modify or delete,it will used this class to notify the MediaScanner to refresh the media database */ package com.softwinner.TvdFileManager; import java.io.File; import java.io.PrintStream; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore.Audio; import android.provider.MediaStore.Images; import android.provider.MediaStore.Video; import android.util.Log; public class RefreshMedia { private Context mContext; static final String EXTERNAL_VOLUME = "external"; private static final String TAG = "RefreshMedia"; public RefreshMedia(Context c) { this.mContext = c; } public void notifyMediaAdd(String file) { File mfile = new File(file); if(mfile.exists()) { try { /* * notify the media to scan */ Uri mUri = Uri.fromFile(mfile); Intent mIntent = new Intent(); mIntent.setData(mUri); mIntent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); mContext.sendBroadcast(mIntent); }catch(Exception e) { Log.d("RefreshMedia",e.getMessage()); } } } public void notifyMediaDelete(String file) { final int ID_AUDIO_COLUMN_INDEX = 0; final int PATH_AUDIO_COLUMN_INDEX = 1; String[] PROJECTION = new String[] { Audio.Media._ID, Audio.Media.DATA, }; Uri[] mediatypes = new Uri[] { Audio.Media.getContentUri(EXTERNAL_VOLUME), Video.Media.getContentUri(EXTERNAL_VOLUME), Images.Media.getContentUri(EXTERNAL_VOLUME), }; ContentResolver cr = mContext.getContentResolver(); Cursor c = null; for( int i = 0; i < mediatypes.length; i++) { c = cr.query(mediatypes[i], PROJECTION, null, null, null); if(c != null) { try { while(c.moveToNext()) { long rowId = c.getLong(ID_AUDIO_COLUMN_INDEX); String path = c.getString(PATH_AUDIO_COLUMN_INDEX); if(path.startsWith(file)) { Log.d(TAG, "delete row " + rowId + "in table " + mediatypes[i]); cr.delete(ContentUris.withAppendedId(mediatypes[i], rowId), null, null); } } } finally { c.close(); c = null; } } } } }