Givemepass's Android 惡補筆記

如何抓取系統照片

| Comments

如果要抓取系統照片, 其實非常簡單,

只要利用ContentProvider進行查詢,

即可將系統內所有的照片路徑抓取出來。

只要利用以下簡短的程式碼, 就可以將系統內的照片路徑抓取出來。

private List<String> getGalleryPath(){
    List<String> pathList = new ArrayList<String>();
    try {
        final String[] columns = {MediaStore.Images.Media.DATA,MediaStore.Images.Media._ID};
        final String orderBy = MediaStore.Images.Media.DATE_ADDED;
        Cursor imagecursor = getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
                null, null, orderBy + " DESC");
        if (imagecursor != null) {
            while (imagecursor.moveToNext()) {
                int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
                String picPath = imagecursor.getString(dataColumnIndex);
                if(picPath != null){
                    pathList.add(picPath);
                }
            }
        }
    } catch(Exception e){
        e.printStackTrace();
    }
    return pathList;
}

首先可以看到columns是查詢ContentProvider的欄位,

orderBy是對加入的資料作排序, 這樣就可以根據照片加入的順序進行排序。

取得ContentResolver後進行query就可以得到一個cursor,

這個cursor去查詢MediaStore.Images.Media.DATA 即可得到所有照片的路徑,

程式碼

Comments

comments powered by Disqus