Android Studio 基礎 之 簡單獲取手機端所有圖片
目錄
Android Studio 基礎 之 簡單獲取手機端所有圖片
一、簡單介紹
Android 開發中的一些基礎操作,使用整理,便於後期使用。
本節介紹,獲取移動端所有圖片,這裏主要是獲得了圖片的路徑(絕對路徑)和圖片名稱,方法不唯一,僅供參考。
二、實現原理
1、使用 Cusor 解析查詢 cursor.getColumnIndex(MediaStore.Images.Media.DATA) 獲取圖片數據
2、 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
String name = cursor.getString(column_index); 得到圖片的據對路徑
3、cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME) 獲取圖片的名稱
三、注意實現
1、因爲要讀取文件夾之類,所以需要讀寫權限
四、預覽效果
五、實現步驟
1、打開Android Studio ,新建工程
2、按照步驟一步一步來,構建一個工程模塊
3、編寫腳本,獲取移動端所有圖片路徑和名稱
4、在 AndroidManifest.xml 添加 讀寫權限
5、連接設備,打包運行,給應用對應權限,效果如上
六、關鍵代碼
1、MainActivity.java
package com.example.getallimages;
import android.database.Cursor;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
ArrayList paths = null;
ArrayList names= null;
List<Map<String, Object>> listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetImagesPath();
Log.i("GetImagesPath", "onCreate: listItems.size " + listItems.size());
}
void GetImagesPath(){
paths = new ArrayList();
names = 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));
// 獲取圖片的絕對路徑
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
String path = cursor.getString(column_index);
paths.add(path);
names.add(name);
Log.i("GetImagesPath", "GetImagesPath: name = "+name+" path = "+ path);
}
listItems = new ArrayList<>();
for (int i = 0; i < paths.size(); i++) {
Map<String, Object> map = new HashMap<>();
map.put("name", paths.get(i));
map.put("desc", names.get(i));
listItems.add(map);
}
}
}
2、AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.getallimages">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>