首先是相册图片的获取:

private final String IMAGE_TYPE = "image/*";

private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的

//使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);

getAlbum.setType(IMAGE_TYPE);

startActivityForResult(getAlbum, IMAGE_CODE);

//重写onActivityResult以获得你需要的信息

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data){

if (resultCode != RESULT_OK) {        //此处的 RESULT_OK 是系统自定义得一个常量

Log.e(TAG,"ActivityResult resultCode error");

return;

}

Bitmap bm = null;

//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口

ContentResolver resolver = getContentResolver();

//此处的用于判断接收的Activity是不是你想要的那个

if (requestCode == IMAGE_CODE) {

try {

Uri originalUri = data.getData();        //获得图片的uri

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);        //显得到bitmap图片

这里开始的第二部分,获取图片的路径:

String[] proj = {MediaStore.Images.Media.DATA};

//好像是android多媒体数据库的封装接口,具体的看Android文档

Cursor cursor = managedQuery(originalUri, proj, null, null, null);

//按我个人理解 这个是获得用户选择的图片的索引值

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//将光标移至开头 ,这个很重要,不小心很容易引起越界

cursor.moveToFirst();

//最后根据索引值获取图片路径

String path = cursor.getString(column_index);

}catch (IOException e) {

Log.e(TAG,e.toString());

}

}

}

点击添加  按钮选择一张图片,显示效果如下:图片下方为图片的绝对路径以及名字

1.Activity源码:

package com.jun.activity;

import java.io.IOException;

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class PictureActivity extends Activity {
    private final String IMAGE_TYPE = "image/*";

private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的
    
    private Button addPic=null,showPicPath=null;
    
    private ImageView imgShow=null;
    
    private TextView imgPath=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picture);
        init();
    }

private void init() {
        // TODO Auto-generated method stub
        
        addPic=(Button) findViewById(R.id.btnClose);
        showPicPath=(Button) findViewById(R.id.btnSend);
        imgPath=(TextView) findViewById(R.id.img_path);
        imgShow=(ImageView) findViewById(R.id.imgShow);
        
        addPic.setOnClickListener(listener);
        
        showPicPath.setOnClickListener(listener);
        
    }
private OnClickListener listener=new OnClickListener(){

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        
        
        Button btn=(Button) v; 
        
        switch(btn.getId()){
        
        case R.id.btnClose:
            setImage();
            break;
            
    case R.id.btnSend:
        
            break;
        }
        
    }

private void setImage() {
        // TODO Auto-generated method stub
         //使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);

getAlbum.setType(IMAGE_TYPE);

startActivityForResult(getAlbum, IMAGE_CODE);
        
        
    }};
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_picture, menu);
        return true;
    }
    
     protected void onActivityResult(int requestCode, int resultCode, Intent data){

if (resultCode != RESULT_OK) {        //此处的 RESULT_OK 是系统自定义得一个常量

Log.e("TAG->onresult","ActivityResult resultCode error");

return;

}

Bitmap bm = null;

//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口

ContentResolver resolver = getContentResolver();

//此处的用于判断接收的Activity是不是你想要的那个

if (requestCode == IMAGE_CODE) {

try {

Uri originalUri = data.getData();        //获得图片的uri

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);        
                    //显得到bitmap图片
                    imgShow.setImageBitmap(bm);

//    这里开始的第二部分,获取图片的路径:

String[] proj = {MediaStore.Images.Media.DATA};

//好像是android多媒体数据库的封装接口,具体的看Android文档

Cursor cursor = managedQuery(originalUri, proj, null, null, null);

//按我个人理解 这个是获得用户选择的图片的索引值

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//将光标移至开头 ,这个很重要,不小心很容易引起越界

cursor.moveToFirst();

//最后根据索引值获取图片路径

String path = cursor.getString(column_index);
                    imgPath.setText(path);
                }catch (IOException e) {

Log.e("TAG-->Error",e.toString());

}

}

}
}

2.xml布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<RelativeLayout
        android:id="@+id/rlTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/titlebar_bg_nor" >

<Button
            android:id="@+id/btnClose"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="6dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/bg_btn"
            android:paddingBottom="2dp"
            android:text="@string/Add"
            android:textColor="#fff"
            android:textSize="12sp" />

<TextView
            android:id="@+id/picture_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
           android:text="@string/picture_title"
            android:textColor="#000"
            android:textSize="20sp"
            android:textStyle="bold" />

<Button
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="6dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/bg_btn"
            android:paddingBottom="2dp"
            android:text="@string/show"
            android:textColor="#fff"
            android:textSize="12sp" />
    </RelativeLayout>
    
   <ImageView 
       android:id="@+id/imgShow"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_margin="15dip"
       android:background="@drawable/bg_img_coner"
       android:src="@drawable/b"
         android:layout_below="@+id/rlTitle"
       android:scaleType="fitXY"
       />
    
   <TextView 
       android:id="@+id/img_path"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@+id/imgShow"
       android:layout_margin="15dip"
       android:hint="图片路径"
      />

</RelativeLayout>

http://blog.csdn.net/qq435757399/article/details/8118528

Android从相册中获取图片以及路径的更多相关文章

  1. Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切

    效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...

  2. iOS--app自定义相册--从自定义的相册中获取图片

    一.获取单张图片 思路: 1.利用UIImagePickerController可以从系统自带的App(照片\相机)中获得图片 2.设置代理,遵守代理协议 注意这个UIImagePickerContr ...

  3. Swift4.0 从相册中获取图片和拍照

    第一步 添加协议 UIImagePickerControllerDelegate,UINavigationControllerDelegate   第二步 添加选择方式 let sexActionSh ...

  4. Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 ? 1 2 3 4 5 6 try {      Intent cameraIntent = new In ...

  5. Android获取SD卡中选中图片的路径(URL)

    最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单.其布局文件如下: [html]  view plain copy   <?xml ver ...

  6. java如何从一段html代码中获取图片的src路径

    java如何从一段html代码中获取图片的src路径 package com.cellstrain.icell.Test; import java.util.ArrayList;import java ...

  7. 修正iOS从照相机和相册中获取的图片 方向

    修正iOS从照相机和相册中获取的图片 方向   修正iOS从照相机和相册中获取的图片 方向 使用系统相机拍照得到的图片的默认方向有时不是ImageOrientationDown,而是ImageOrie ...

  8. Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)

    向系统相册中插入图片调用此方法时,相册中会出现两张一样的图片 MediaStore.Images.Media.insertImage 一张图片是原图一张图片是缩略图.表现形式为:android4.4. ...

  9. 我的Android进阶之旅------&gt; Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...

随机推荐

  1. Visual Studio新建的源文件的默认编码

    原来VS新建的源文件默认的编码是根据系统locale选择的.我的是国标2312.我草.可坑死我了.一直不知道. 当时主要是需要用doxygen生成html文档,它默认的输入文件的格式是UTF-8,是不 ...

  2. 2014-07-25 改进自定义菜单与使用SVN进行协同开发

    今天是在吾索实习的第13天.今天没有做过多的代码设计,只进行了一些代码的分析与进一步优化.其中,发现创建自定义菜单的关键代码书写可分为两部分: JSON格式的字符串在.net中的语法书写: strin ...

  3. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  4. linux下常用FTP命令

    linux下常用FTP命令 1. 连接ftp服务器 1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1b)服 ...

  5. windows server2012域服务器降级的方法

    最近在一个新的网络环境里建立windows域服务器,准备建立主.备两台域服务器.在一台新服务器上面安装了windows2012R2并配置了DC服务.域和林的级别设置为Windows2012R2级别.在 ...

  6. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  7. github atom创建自己的语法高亮

    使用atom一段时间了,有些插件还不是很成熟.比如项目中使用protobuf,早就有人写了语法高亮(https://github.com/podgib/atom-protobuf),但是效果不是很好. ...

  8. SUBTOTAL 函数与所在行

    SUBTOTAL 函数与所在行 设计要点:数据汇总.隐藏.筛选 阿金:给你推荐一个函数SUBTOTAL. 秀秀:又是函数!俺不喜欢. 阿金:虽然你不喜欢函数,但是你也离不了啊,比如汇总. 秀秀:那倒是 ...

  9. Java(TM) SE Development Kit 6 卸载不掉怎么办

    错误描述:Java 安装时断电,再次安装java时,提示“您的电脑上已经安装了此软件.是否要重新安装”,点“是”后出现“内部错误2753:RegUtils”,点“确定”又出现上述提示. 解决办法 :使 ...

  10. 学习OkHttp wiki--Interceptors

    Interceptors 拦截器(Interceptors)是一种强有力的途径,来监控,改写和重试HTTP访问.下面是一个简单的拦截器,对流出的请求和流入的响应记录日志. class LoggingI ...