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>

 

猜你喜欢

转载自blog.csdn.net/u014361280/article/details/107098856