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 音頻