Android-获取手机上所有图片

原创 2017年05月05日 16:07:54

核心代码:


 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));
                    //获取图片的详细信息
String desc = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DESCRIPTION));
                    names.add(name);
                    descs.add(desc);
                    fileNames.add(new String(data, 0, data.length - 1));
                }

demo如下:

1、权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

java类:

package com.example.administrator.downloadimgdemo;

import android.app.AlertDialog;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2017/5/5.
 */

public class GetAllImg extends AppCompatActivity {

    //查看图片按钮
    private Button look;
    private Button add;
    //显示图片名称的list
    ListView show_list;
    ArrayList names = null;
    ArrayList descs = null;
    ArrayList fileNames = null;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        look = (Button) findViewById(R.id.look);
        add = (Button) findViewById(R.id.add);
        show_list = (ListView) findViewById(R.id.show_list);

        names = new ArrayList();
        descs = new ArrayList();
        fileNames = new ArrayList();

        look.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                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));
                    //获取图片的详细信息
                    String desc = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DESCRIPTION));
                    names.add(name);
                    descs.add(desc);
                    fileNames.add(new String(data, 0, data.length - 1));
                }
                List<Map<String, Object>> listItems = new ArrayList<>();
                for (int i = 0; i < names.size(); i++) {
                    Map<String, Object> map = new HashMap<>();
                    map.put("name", names.get(i));
                    map.put("desc", descs.get(i));
                    listItems.add(map);
                }
                //设置adapter
                SimpleAdapter adapter = new SimpleAdapter(GetAllImg.this, listItems,
                        R.layout.line, new String[]{"name", "desc"}, new int[]{R.id.name, R.id.desc});

                show_list.setAdapter(adapter);
            }
        });

        ///list的点击事件
        show_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                View viewDiag = getLayoutInflater().inflate(R.layout.view, null);

                ImageView image = (ImageView) viewDiag.findViewById(R.id.image);
                image.setImageBitmap(BitmapFactory.decodeFile((String) fileNames.get(i)));

                new AlertDialog.Builder(GetAllImg.this).setView(viewDiag)
                        .setPositiveButton("确定", null).show();
            }
        });
    }
}

布局:

line.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="name" />

    <TextView
        android:id="@+id/desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="desc" />

</LinearLayout>

view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

</LinearLayout>

参考:

Android实现获取手机里面的所有图片

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

写这篇文章之前,先简单说几句,首先是先恭喜下自己获得了2013年的博客之星称号,很意外也很开心,自己是从2013年开始写博客,那时候也不知道怎么写,我从小就不喜欢写日记,作文什么的,所以刚开始都是贴代...
  • xiaanming
  • xiaanming
  • 2014年01月24日 16:35
  • 64383

Android-获取手机上的图片、视频、音频

ContentResolver query 的参数:public final Cursor query (Uri uri, String[] projection,String selection,S...
  • sinat_31057219
  • sinat_31057219
  • 2017年05月05日 17:39
  • 1184

Android拍照和获取相册图片

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过。 再也不要问度娘了,再也不用一堆博客里找啊找了。。。 ----------------------------...
  • happy_fsyy
  • happy_fsyy
  • 2016年07月21日 20:32
  • 5093

Android开发之获取相册照片和获取拍照照片

在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片...
  • Beyond0525
  • Beyond0525
  • 2013年05月17日 15:38
  • 116798

Android实现获取手机里面的所有图片

public class MainActivity extends Activity {//查看图片按钮 private Button look; private Button add...
  • bi_diu1368
  • bi_diu1368
  • 2016年09月03日 22:52
  • 5493

从android相册获取所有图片的路径

在做从系统选择图片并获取到它们的路径时发现有些图片的uri.getScheme是“file”,有些图片的uri.getScheme是“content” 所有导致用uri.getPath并不能获取所有图...
  • GeiZuoZuoZuo
  • GeiZuoZuoZuo
  • 2015年08月14日 12:09
  • 1569

系统相机拍照、从相册中获取图片

一.使用系统相机拍照: private void openCamera() { File outputImage = new File(getExternalCacheDir(...
  • yb1020368306
  • yb1020368306
  • 2017年09月19日 15:06
  • 460

获取android sd卡中某个文件夹下的所有图片

由于项目需要
  • wei18359100306
  • wei18359100306
  • 2014年11月06日 11:58
  • 10912

Android获取手机图片路径的办法

最近项目开发需要开发个头像上传的,其中一个步骤就是从相册和手机相机中获取到图片的路径。调用相机拍照保存路径,这个比较简单没什么可说的直接在代码中实现即可Intent cameraIntent = ne...
  • yhhf0320
  • yhhf0320
  • 2015年04月29日 09:25
  • 1215

Android获取手机所有图片并显示

  • 2014年10月19日 21:10
  • 2.08MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-获取手机上所有图片
举报原因:
原因补充:

(最多只允许输入30个字)