【Android开发】监听图库数据库的变化
步骤一:
保存图片或者删除之前,初始化ContentObserver
ScreenshotContentObserver mScreenObserver = new ScreenshotContentObserver(context, mHandler);
Uri imageUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI;
Uri imageUri2 = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
context.getContentResolver().registerContentObserver(imageUri, false, mScreenObserver);
context.getContentResolver().registerContentObserver(imageUri2, false, mScreenObserver);
跟进ScreenshotContentObserver类:
public class ScreenshotContentObserver extends ContentObserver {
public static final String TAG = "ScreenshotContentObserver";
private Context mContext;
private Handler mHandler;
private boolean showToast = true;
public ScreenshotContentObserver(Context context, Handler handler) {
super(handler);
mContext = context;
mHandler = handler;
}
/**
* 主要在onChange中响应数据库变化,并进行相应处理
*/
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
if(showToast){
Toast.makeText(mContext, "保存成功!", Toast.LENGTH_SHORT).show();
showToast = false;
}
}
}
设定boolean值showToast的意图,是因为每添加一张图片,都会执行一次onChange 方法,此处是个人为避免这种情况单独处理的。
Handler传过来,可以向主线程回传消息。
步骤二:
操作图库,添加删除图片即可。