在android系统中,当SD卡挂载在电脑上时候,如果手动将语音备忘录中的录音删除的时,那么相应数据库中的数据也是需要修改的。此时实现需要对挂载进行监听,需要继承BroadcastReceiver类,实现其中的onRecieve(Context context, Intent inten)方法。代码如下
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_EJECT)) {
//TODO:
System.out.println("-------------------> mount ACTION_MEDIA_EJECT");
Cursor c = MemorDataBaseHelper.queryMemor(context);
while(c.moveToNext()){
String path = c.getString(MemorDataBaseHelper.DATA_COLUMN_INDEX);
File f = new File(path);
if(!f.exists()){
System.out.println(f+"the file does not exist");
MemorDataBaseHelper.deleteMemor(context, c.getString(MemorDataBaseHelper.ID_COLUMN_INDEX));
}
}
c.close();
} else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
//TODO:
System.out.println("-------------------> mount ACTION_MEDIA_MOUNTED");
Cursor c = MemorDataBaseHelper.queryMemor(context);
while(c.moveToNext()){
String path = c.getString(MemorDataBaseHelper.DATA_COLUMN_INDEX);
File f = new File(path);
if(!f.exists()){
System.out.println(f+"the file does not exist");
MemorDataBaseHelper.deleteMemor(context, c.getString(MemorDataBaseHelper.ID_COLUMN_INDEX));
}
}
c.close();
}
}
此时须在Manifest中进行注册:
<receiver android:name=".ExternalStorageListener"> <intent-filter> <action android:name="android.intent.action.MEDIA_EJECT" /> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <data android:scheme="file"/> </intent-filter> </receiver>