Android 新增一张图片 加入相册

当我要把一张图片加入到相册时, 执行如下的 代码, 发个广播就好了 
getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));


但是发现在有些手机上 比较慢, 不是很实时
如果 做相册之类的 需求的画,  新增一张图片然后在立马刷新数据的画, 可能 没有刚刚新增的数据

那么还可以用如下方法: 
MediaScannerConnection.scanFile(getContext().getApplicationContext(), new String[]{mCurrentSavePhotoPath}, null, new MediaScannerConnection.OnScanCompletedListener() {
    @Override
    public void onScanCompleted(String path, Uri uri) {
        LogUtil.e(TAG, "onScanCompleted path = " + path);
    }
});
测试结果 确实是比发广播快一些:

对了说道实时扫描 Android 手机图片数据:

有如下两种方法:
1) 通过 activity 的 activity.getLoaderManager().initLoader 方法 
final String[] columns = {MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.WIDTH, MediaStore.Images.Media.HEIGHT};
activity.getLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks<Cursor>() {
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return new CursorLoader(getContext(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, "", null, MediaStore.Images.Media.DATE_MODIFIED + " DESC ");
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cur) {
        handleImageData(cur);
        getMvpView().loadImgOver(mAlbumModels);
    }

    @Override
    public void onLoaderReset(Loader<Cursor> loader) {

    }
});
2) 使用ContentResolver 查询 
new AsyncTask<Void, Void, Void>() {
    @Override
    protected Void doInBackground(Void... params) {

        ContentResolver cr = getContext().getContentResolver();
        final String[] columns = {MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.WIDTH, MediaStore.Images.Media.HEIGHT};
        Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, "", null, MediaStore.Images.Media.DATE_MODIFIED + " DESC ");

        handleImageData(cur);
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        getMvpView().loadImgOver(mAlbumModels);
    }
}.execute();

第一种方法的好处是, 当如果有 图片数据改动时,  它能够自动重新查询一遍数据

第二种就是手动查询, 如果有数据变动 也不知道 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值