我們在編寫android程序的時候,經(jīng)常會有這種需求,就是獲取手機內(nèi)的所有圖片,例如制作一個圖片編輯軟件,就需要首先獲取到手機中的圖片。今天華清遠見教育科技集團要為分享的就是android 獲取手機內(nèi)所有圖片的代碼實現(xiàn)。
申明權(quán)限
通過內(nèi)容觀察者獲取手機內(nèi)的所有圖片地址,圖片名
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以上責(zé)需要 做一個權(quán)限處理
申請權(quán)限
public void getSDPermission() {
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//申請權(quán)限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,},
200);
} else {
//已經(jīng)有權(quán)限,
//
getAllImage();
}
}
權(quán)限的回調(diào)
@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) {
//判斷權(quán)限
for (int i = 0; i < grantResults.length; i++) {
//判斷是否 申請成功權(quán)限
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
//失敗 繼續(xù) 申請權(quán)限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
200);
return;
}else {
getAllImage();
}
}
}
return;
}
}
}
熱點新聞
課程問答