1、当我想做一个相册的时候,我需要的获得 SD 卡下所有图片的路径 path,然后利用 Bitmap的方法画到到画布 canvas 上。我该如何获得 SD 卡下的图片路径呢?其实在没有做好研究的之前我走了好多弯路,并且还是一个错误的弯路。首先我先获得 SD 卡下的根目录路径:privateString isSdcard()File sdcardDir=null;boolean isSDExist=Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);if(isSDExist)/如果存在 SDcard 就找到跟
2、目录 sdcardDir=Environment.getExternalStorageDirectory();return sdcardDir.toString();else return null; 找到/sdcard 之后,就开始利用 File f = file.listFile();的方法获得目录下的所有文件的列表。public void getpicpath(String sdpath)/打开 SD 卡目录File file = new File(sdpath);/获取 SD 卡目录列表File files =file.listFiles();for(int z=0;z();Strin
3、g filename=file.getName();int idx = filename.lastIndexOf(“.“);if (idx ();cr = getContentResolver();String projection = Thumbnails._ID, Thumbnails.IMAGE_ID,Thumbnails.DATA ;Cursor cursor = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projection,null, null,null);if(cur.moveToFirst()int _id;int image_id;S
4、tring image_path;int _idColumn = cur.getColumnIndex(Thumbnails._ID);int image_idColumn =cur.getColumnIndex(Thumbnails.IMAGE_ID);int dataColumn = cur.getColumnIndex(Thumbnails.DATA);Log.i(TAG, String.valueOf(image_idColumn) ;do/ Get the field values_id = cur.getInt(_idColumn);image_id =cur.getInt(ima
5、ge_idColumn);image_path =cur.getString(dataColumn);/ Do something with the values./ Log.i(TAG, _id + “ image_id:“+ image_id + “ path:“/ + image_path +“-“);HashMap hash = new HashMap();hash.put(“image_id“, image_id +“);hash.put(“path“, image_path);list.add(hash); while (cur.moveToNext();上述方法获得含有 imag
6、e_path 和 id 的 list这里的 image_path 其实是缩略图的路径,要找到原图片的路径要利用 image_id 和原路径相关联的关系寻找,如下:我是用 SimpleAdapter 显示图片的,所以点击的时候会得到一个 position 的位置 int ,再找到 image_id;public void onItemClick(AdapterView arg0, Viewarg1, int position,long arg3)cr = getContentResolver();String image_id = list.get(position).get(“image_id
7、“); String projection = Media._ID, Media.DATA ;Cursor cursor = cr.query(Media.EXTERNAL_CONTENT_URI, projection,Media._ID +“=“ + image_id, null,null);if (cursor !=null)cursor.moveToFirst();Stringpath = cursor.getString(cursor.getColumnIndex(Media.DATA);Log.i(TAG,path);else Toast.makeText(this,“Image doesnt exist!“, Toast.LENGTH_SHORT).show();