Android为多媒体提供的ContentProvider的Uri如下:

1、MediaStore.Audio.Media.EXTERNAL_CONTENT_URI:存储在手机外部存储器(SD卡)上的音频文件内容的ContentProvider的Uri。

2、MediaStore.Audio.Media.INTERNAL_CONTENT_URI:存储在手机内部存储器上的音频文件内容的ContentProvider的Uri。

3、MediaStore.Audio.Images.EXTERNAL_CONTENT_URI:存储在手机外部存储器(SD卡)上的图片文件内容的ContentProvider的Uri。

4、MediaStore.Audio.Images.INTERNAL_CONTENT_URI:存储在手机内部存储器上的图片文件内容的ContentProvider的Uri。

5、MediaStore.Audio.Video.EXTERNAL_CONTENT_URI:存储在手机外部存储器(SD卡)上的视频文件内容的ContentProvider的Uri。

6、MediaStore.Audio.Video.INTERNAL_CONTENT_URI:存储在手机内部存储器上的视频文件内容的ContentProvider的Uri。

下面用一个简单实例来演示,实现查询SD卡的所有图片和添加图片到SD卡的功能,代码如下:

Activity:

package com.lovo.activity;import java.io.OutputStream;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore.Images.Media;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.lovo.readpictures.R;public class MainActivity extends Activity implements OnClickListener {private ListView listView;private BaseAdapter adapter;// 存放SD卡图片的集合private ArrayList<HashMap<String, Object>> pictureList = new ArrayList<HashMap<String, Object>>();/** * 从SD卡取出图片,初始化集合数据 */public void initData() {pictureList.clear();Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI,null, null, null, null);while (cursor.moveToNext()) {// 图片的名称String name = cursor.getString(cursor.getColumnIndex(Media.DISPLAY_NAME));// 图片的描述String info = cursor.getString(cursor.getColumnIndex(Media.DESCRIPTION));// 图片位置的数据byte[] data = cursor.getBlob(cursor.getColumnIndex(Media.DATA));// 将data转换成String类型的图片路径String path = new String(data, 0, data.length - 1);HashMap map = new HashMap();map.put("name", name == null ? "" : name);map.put("info", info == null ? "" : info);map.put("path", path);pictureList.add(map);}cursor.close();}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initData();listView = (ListView) findViewById(R.id.main_lv);Button addBtn = (Button) findViewById(R.id.main_btn_add);addBtn.setOnClickListener(this);adapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.picture_list_content, null);}ImageView picImageView = (ImageView) convertView.findViewById(R.id.picture_list_content_iv_pic);TextView nameText = (TextView) convertView.findViewById(R.id.picture_list_content_tv_name);TextView infoText = (TextView) convertView.findViewById(R.id.picture_list_content_tv_info);// 取出当前图片信息String name = pictureList.get(position).get("name").toString();String info = pictureList.get(position).get("info").toString();String path = pictureList.get(position).get("path").toString();nameText.setText(name);infoText.setText(info);// 根据图片路径创建Bitmap对象Bitmap bitmap = BitmapFactory.decodeFile(path);picImageView.setImageBitmap(bitmap);return convertView;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic int getCount() {return pictureList.size();}};listView.setAdapter(adapter);listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) {// 加载view.xml界面布局代表的视图View viewDialog = getLayoutInflater().inflate(R.layout.view,null);// 获取viewDialog中的ImageView组件ImageView image = (ImageView) viewDialog.findViewById(R.id.view_iv);// 设置image显示指定图片image.setImageBitmap(BitmapFactory.decodeFile(pictureList.get(position).get("path").toString()));// 使用对话框显示用户单击的图片new AlertDialog.Builder(MainActivity.this).setView(viewDialog).setPositiveButton("确定", null).show();}});}@Overridepublic void onClick(View v) {ContentValues values = new ContentValues();// 设置图片名称values.put(Media.DISPLAY_NAME, "机器人");// 设置图片描述values.put(Media.DESCRIPTION, "android机器人");// 设置图片MIME类型values.put(Media.MIME_TYPE, "image/png");// 先插入values已有的值,同时得到Uri对象Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,values);// 加入图片需要单独打开输出流来进行操作try {Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);// 获取刚刚插入的数据的Uri对应的输出流OutputStream os = getContentResolver().openOutputStream(uri);// 将bitmap图片保存到Uri对应的数据节点中bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);os.close();} catch (Exception e) {e.printStackTrace();}initData();adapter.notifyDataSetChanged();}}

布局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" >    <Button        android:id="@+id/main_btn_add"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="添加图片" />    <ListView        android:id="@+id/main_lv"        android:layout_width="match_parent"        android:layout_height="wrap_content" >    </ListView></LinearLayout>

对话框的布局XML(view.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" >    <ImageView        android:id="@+id/view_iv"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>




更多相关文章

  1. 网页支付宝支付,通过form表单提交,在苹果手机上无法跳转
  2. Android从网络中获得一张图片并显示在屏幕上的实例详解
  3. Android(安卓)干货App开发总结
  4. Drozer – Android(安卓)APP安全评估工具(附测试案例)
  5. Android实现图片单点旋转缩放保存-仿百度魔图
  6. Android(安卓)4.4从图库选择图片,获取图片路径并裁剪
  7. android获取本地图片或拍照图片
  8. Android学习札记47:TextView显示Html类解析的网页和图片及自定义
  9. Android(安卓)图像系列: 图片的压缩

随机推荐

  1. MySQL中explain语句的基本使用教程
  2. MySQL mysqladmin客户端的使用简介
  3. MySQL MGR搭建过程中常遇见的问题及解决
  4. MySQL 权限控制细节分析
  5. MySQL 权限控制详解
  6. MySQL 利用frm文件和ibd文件恢复表数据
  7. MySQL使用Xtrabackup备份流程详解
  8. MySQL GTID全面总结
  9. MySQL大库搭建主从的一种思路分享
  10. 详解MySQL8.0原子DDL语法