【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传过来,可以向主线程回传消息。

步骤二:

操作图库,添加删除图片即可。

posted @ 2018-12-27 14:44  浪里小白龙呼呼呼  阅读(1593)  评论(0编辑  收藏  举报