Android MediaStore扫描 & 向MediaStore中插入文件记录

http://www.cnblogs.com/androidwsjisji/archive/2012/10/24/2737604.html

通知MediaStore扫描某个文件:

private void scanSingleFile(String filePath) {
        if (filePath == null) {
            return;
        }
// broadcast to scan file
        boolean bmnt = Environment.getExternalStorageDirectory().getPath()
                .startsWith("/mnt");
        bmnt = mDownloadDestination
                .equalsIgnoreCase(UpDownloadUtils.DOWNLOAD_DEST_SDCARD) ? bmnt
                : false;
        File file = new File(bmnt ? ("/mnt" + filePath) : filePath);

        MediaScannerConnection.scanFile(mContext,
                new String[] { file.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    @Override
                    public void onScanCompleted(String path, Uri uri) {
                    
                        ContentResolver cr = mContext.getContentResolver();
                        long datemodified = 0;
                        long dateadded = 0;
                        Cursor cursor = cr.query(uri, null, null, null, null);
                        if (cursor != null && cursor.moveToFirst()) {
                            datemodified = cursor.getLong(cursor
                                    .getColumnIndex(MediaStore.MediaColumns.DATE_MODIFIED));
                            dateadded = cursor.getLong(cursor
                                    .getColumnIndex(MediaStore.MediaColumns.DATE_ADDED));
                            cursor.close();
                        }

                        ContentValues values = new ContentValues();
                        if (datemodified > 0
                                && String.valueOf(datemodified).length() > 10) {
                            values.put(MediaStore.MediaColumns.DATE_MODIFIED,
                                    datemodified / 1000);
                        }
                        if (dateadded > 0
                                && String.valueOf(dateadded).length() > 13) {
                            values.put(MediaStore.MediaColumns.DATE_ADDED,
                                    dateadded / 1000);
                        }

                        if (values.size() > 0) {
                            cr.update(uri, values, null, null);
                        }
                    }
                });
    }

向MediaStore中插入文件记录

ContentValues newValues = new ContentValues(6);
            String title = FileName.substring(0, pointIndex);
            newValues.put(MediaStore.Images.Media.TITLE,
                    FileName.substring(0, pointIndex));
            newValues.put(MediaStore.Images.Media.DISPLAY_NAME,
                    sourceFile.getName());
            newValues.put(MediaStore.Images.Media.DATA, sourceFile.getPath());
            newValues.put(MediaStore.Images.Media.DATE_MODIFIED,
                    System.currentTimeMillis() / 1000);
            newValues.put(MediaStore.Images.Media.SIZE, sourceFile.length());
            newValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
            uri = contentResolver.insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, newValues);


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值