since.2006  

系统相册显示SD卡照片时,为了提高效率不是遍历文件系统中每个目录中的图片后显示出来。而且直接查询系统数据库中的图片信息记录显示。

所以自己新建图片后,打开系统相册时,会找不到所新建的图片。这时可以通过几种方法将新建的图片插入到系统数据库中。

使用Broadcast

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File("/sdcard/image.jpg"));
intent.setData(uri);
mContext.sendBroadcast(intent);

使用MediaScannerConnection

final MediaScannerConnection msc = new MediaScannerConnection(mContext, new MediaScannerConnectionClient() {
 public void onMediaScannerConnected() {
  msc.scanFile("/sdcard/image.jpg", "image/jpeg");
 }
 public void onScanCompleted(String path, Uri uri) {
  Log.v(TAG, "scan completed");
  msc.disconnect();
 }
});
msc.connect();

这两种方法任何一种即可,第二种方法可以通过回调的参数uri取得插入到数据库后的主键id进行后续操作。

 

Posted by hee at 21:03 PM | Permalink | 评论(0)