android通过ContentPrivider扫描sd卡所有图片,并显示

本文介绍如何利用ContentProvider扫描SD卡上的所有图片,并通过ListView适配器显示。强调在处理大量图片时,需注意内存优化以防止因内存溢出导致应用崩溃。
摘要由CSDN通过智能技术生成

如题:

重点在于ContentPrivider的使用,和图片的显示上

首先在使用ContentPrivider查找图片前,先将sd卡整个扫描一遍,要不然的话你可能刚刚添加的图片是不会查找出来的。

// 必须在查找前进行全盘的扫描,否则新加入的图片是无法得到显示的(加入对sd卡操作的权限)
	public void allScan() {
		sendBroadcast(new Intent(
				Intent.ACTION_MEDIA_MOUNTED,
				Uri.parse("file://" + Environment.getExternalStorageDirectory())));
	}
加入对sd卡访问的权限:

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

下一步就可以使用ContentPrivider了:

/**
 * @FILE:ImageService.java
 * @AUTHOR:hui-ye
 * @DATE:2013-5-21 下午3:30:41
 **/
package com.image.service;

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

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;

/*******************************************
 * 
 * @CLASS:ImageService
 * @DESCRIPTION:
 * @AUTHOR:hui-ye
 * @VERSION:v1.0
 * @DATE:2013-5-21 下午3:30:41
 *******************************************/
public class ImageService {
	private Context context;

	public ImageService(Context context) {
		this.context = context;
	}

	/**
	 * @description:通过contentprovider获得sd卡上的图片
	 * @author:hui-ye
	 * @return:void
	 */

	public List<HashMap<String, String>> getImages() {
		// 指定要查询的uri资源
		Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
		// 获取ContentResolver
		ContentResolver contentResolver = context.getContentResolver();
		// 查询的字段
		String[] projection = { MediaStore.Images.Media._ID,
				MediaStore.Images.Media.DISPLAY_NAME,
				MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE };
		// 条件
		String selec
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值