我们在编写android程序的时候,经常会有这种需求,就是获取手机内的所有图片,例如制作一个图片编辑软件,就需要首先获取到手机中的图片。今天华清远见教育科技集团要为分享的就是android 获取手机内所有图片的代码实现。
申明权限
通过内容观察者获取手机内的所有图片地址,图片名
ArrayList names = null;
ArrayList fileNames = null;
public List
List
names = new ArrayList();
fileNames = new ArrayList();
Cursor cursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
//获取图片的名称
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
//获取图片的地址
byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
names.add(name);
fileNames.add(new String(data, 0, data.length - 1));
}
for (int i = 0; i < names.size(); i++) {
Map
map.put("name", names.get(i));
map.put("fileNames", fileNames.get(i));
Log.i(MainActivity.class.getName(), names.get(i) + "");
Log.i(MainActivity.class.getName(), fileNames.get(i) + "");
listItems.add(map);
}
return listItems;
}
如果你的android版本是6.0以上责需要 做一个权限处理
申请权限
public void getSDPermission() {
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//申请权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,},
200);
} else {
//已经有权限,
//
getAllImage();
}
}
权限的回调
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case 200: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0) {
//判断权限
for (int i = 0; i < grantResults.length; i++) {
//判断是否 申请成功权限
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
//失败 继续 申请权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
200);
return;
}else {
getAllImage();
}
}
}
return;
}
}
}
热点新闻