android 利用contentprovider查询图库里的图片并用imageview显示

  1、在图库的contentprovider里存储的是image、video、audio的信息的存储,如:它们的格式、文件的路径等,因此外面利用getcontentprovider对数据库进行查询这些信息可以获得文件在sd卡的存储地址从而可以获取图片,一个简单的demo:

public class MainActivity extends PermissionActivity {

    ImageView imageview ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageview = (ImageView) findViewById(R.id.image);

        Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        ContentResolver mContentResolver = MainActivity.this.getContentResolver();

        //只查询jpeg和png的图片
        Cursor mCursor = mContentResolver.query(mImageUri, null,
                MediaStore.Images.Media.MIME_TYPE + "=? or "
                        + MediaStore.Images.Media.MIME_TYPE + "=?",
                new String[] { "image/jpeg", "image/png" }, MediaStore.Images.Media.DATE_MODIFIED);

        if(mCursor == null){
            return;
        }
  //只显示第一张图片
        mCursor.moveToNext();
        String path = mCursor.getString(mCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));

        Bitmap bitmap =BitmapFactory.decodeFile(path);
        imageview.setImageBitmap(bitmap);


}

}

  图库的数据库只是一个索引,它只存储了图片、视频、音频的索引即位置,并没有真的存储,因此在访问的时候得得到路径然后加以利用。

MediaStore.Images.Media.DATA 图片
MediaStore.Videos.Media.DATA 视频
MediaStore.Audios.Media.DATA 音频
posted @ 2016-10-25 11:17  Lammy  阅读(5247)  评论(0编辑  收藏  举报