在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>