Android Studio 基礎 之 簡單獲取手機端所有圖片

 

 

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章