我们在android开发过程中 经常有做到发图片或修改上传头像的功能 即要调用系统相册 如何调用系统相册并处理返回的数据呢?因为随着android手机系统的提高 不同系统的手机对调用相册并处理相册不同,所以我们就要做处理 让它可以兼容所有不同版本及系统的手机。

方法/步骤

  1. 进行相册有两种方式:一种是直接进入相册

    public static Intent INTENT_ACTION_PICK() {

    Intent intent = new Intent(Intent.ACTION_PICK,

    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    intent.setType("image/*");

    return intent;

    }

    另一种是直接进入相册目录

    public static Intent INTENT_ACTION_CONTENT() {

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT,

    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    intent.setType("image/*");

    return intent;

    }

    startActivityForResult(intent,PICTURE);

  2. 写一个回调方法接收返回相册的路径

    public interface PhotoCallBack {   void onSuccess(String picturePath);// 拿取相片成功   void onFailure();// 拿取相片失败

    }

    这里写成回调方法的原因是 我们在开发过程中不仅仅是一个模块用到调用系统相册 写成一个回调方法 并在在一个类里处理返回的数据

  3. 根据SDK_INT来分类处理相册返回相片路径

    public static void getPhotoURLByAlbum(Context context, Intent data,      PhotoCallBack callback) {   if (data == null) {      callback.onFailure();      return;   }   final Uri selectedImage = data.getData();   if (selectedImage == null) {      callback.onFailure();      return;   }   String picturePath = "";   // 关于Android4.4的图片路径获取,如果回来的Uri的格式有两种   if (Build.VERSION.SDK_INT >= 19         && DocumentsContract.isDocumentUri(context, selectedImage)) {      String wholeID = DocumentsContract.getDocumentId(selectedImage);      String id = wholeID.split(":")[1];      String[] column = { MediaStore.Images.Media.DATA };      String sel = MediaStore.Images.Media._ID + "=?";      Cursor cursor = context.getContentResolver().query(            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel,            new String[] { id }, null);      if (cursor.moveToNext()) {         int columnIndex = cursor.getColumnIndex(column[0]);         picturePath = cursor.getString(columnIndex);         callback.onSuccess(picturePath);// 获取图片路径      }      cursor.close();   } else {      String[] projection = { MediaStore.Images.Media.DATA };      Cursor cursor = context.getContentResolver().query(selectedImage,            projection, null, null, null);      if (cursor.moveToNext()) {         int column_index = cursor               .getColumnIndex(MediaStore.Images.Media.DATA);         picturePath = cursor.getString(column_index);         callback.onSuccess(picturePath);// 获取图片路径         Log.e("aa", "aa");      }      cursor.close();   }}

  4. 根据返回的相片路径URL来获得我们需要的Bitmap 我们就可以在ImageView直接显示了

    public static Bitmap getBitmapByURL(String PhotoURL) {   BitmapFactory.Options options = new BitmapFactory.Options()   options.inJustDecodeBounds = false;   Bitmap bitmap = BitmapFactory.decodeFile(PhotoURL, options);   if (bitmap != null) {      return bitmap;   }   return null;}   //   // 把图片保存到我们的系统图库中

    public static void saveMyImageToGallery(Context context, Bitmap bmp) {    File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");    if (!appDir.exists()) {        appDir.mkdir();    }    String fileName = System.currentTimeMillis() + ".jpg";    File file = new File(appDir, fileName);    try {        FileOutputStream fos = new FileOutputStream(file);        bmp.compress(CompressFormat.JPEG, 100, fos);        fos.flush();        fos.close();    } catch (FileNotFoundException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();       try {        MediaStore.Images.Media.insertImage(context.getContentResolver(),            file.getAbsolutePath(), fileName, null);    } catch (FileNotFoundException e) {        e.printStackTrace();    }}

photo的更多相关文章

  1. 在 Windows 10 中启用 Windows Photo Viewer

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...

  2. Autodesk的照片建模云服务—Autodesk ReCap 360 photo 的测试数据

    之前已经给大家介绍过了Autodesk的照片建模云服务—Autodesk ReCap 360 photo, 你也可以自己登录到http://recap360.autodesk.com/ 自己试一试. ...

  3. 如何申请Autodesk ReCap 360 photo的云币(Cloud Credit)

    在之前的博客中我介绍过Autodesk的照片建模云服务—Autodesk ReCap 360 photo,通过Autodesk ReCap 360 photo,你可以非常方便的通过照片生成三维模型.如 ...

  4. Autodesk的照片建模云服务—Autodesk ReCap 360 photo

    现实捕捉技术方兴未艾,简单的讲现实捕捉技术就是把现实中的现状信息数字化到计算机中以便做进一步的处理.对于不同的应用目的会有不同的捕捉设备,工程或传媒娱乐行业中经常用到的肯定就是三维模型了.那如何得到三 ...

  5. iOS开发之保存照片到系统相册(Photo Album)

    iOS开发之保存照片到系统相册(Photo Album) 保存照片到系统相册这个功能很多社交类的APP都有的,今天我们简单讲解一下,如何将图片保存到系统相册(Photo Album). 创建UIIma ...

  6. mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据

    var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...

  7. iOS - Photo Album 图片/相册管理

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCod ...

  8. WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞

    漏洞名称: WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞 CNNVD编号: CNNVD-201311-405 发布时间: 2013-11-28 更新时间: 201 ...

  9. 数据结构(线段树):BZOJ 3126: [Usaco2013 Open]Photo

    3126: [Usaco2013 Open]Photo Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 222  Solved: 116 Descrip ...

  10. [PWA] 18. Clean the photo cache

    We cannot let photo always keep caching new data without clean the old data. If message is not displ ...

随机推荐

  1. Nagios邮件报警

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; fon ...

  2. jquery练习之瀑布流

    最近有空简单学习了下瀑布流,写完后想和大家一起分享下,但我知道我的代码有很多缺陷不足,希望多多包涵.(纯属兴趣非专业学习人士) 众所周知,瀑布流大概分为2种,一种是浮动式的瀑布流,一种是定位式的瀑布流 ...

  3. 编译MangosZero

    最近研究了一下魔兽世界模拟器MangosZero,花了两天时间终于编译成功!现在把编译的过程做个完整的记录,以便让想要学习编译的同学们少走弯路! 服务器端运行界面: 客户端运行界面: 一:下载源程序 ...

  4. Rookey.Frame v1.0极速开发平台稳定版发布

    Rookey.Frame v1.0经过一年时间的修改及沉淀,稳定版终于问世了,此版本经过上线系统验证,各个功能点都经过终端用户验证并持续优化,主要优化以下几个方面: 1.性能较原来提升3倍之多 2.修 ...

  5. TDD 中关于mock一些理解

    最近在写代码的UT时case注意到: 在写某个类的test suit时,如果这个类既有组合(Composition),又有聚合关系(Aggregation). 组合关系(Composition):部分 ...

  6. 基于jquery 的分页插件,前端实现假分页效果

    上次分享了一款jquery插件,现在依旧分享这个插件,不过上一次分享主要是用于regular框件,且每一页数据都是从后端获取过来的,这一次的分享主要是讲一次性获取完数据 然后手动进行分页.此需求基本上 ...

  7. T-SQL几个简单的操作

    视图 咱们先来了解下视图到底是什么意思,顾名思义,用简单的视觉方式展现复杂的内容 有什么功能呢, 各位应该还记得咱们之前练习的那个小小的数据库superise,里面有这么四张表,分别是: studen ...

  8. IIS环境下部署项目

    1.环境部署 1.1安装IIS7 进入控制面板,选择"程序和功能",进入如下页面后,点击"Turn Windows features on or off". 找 ...

  9. CSS空白符处理!

    在CSS中有一个非常重要但对于初学者又非常容易忽略的属性: white-space:nowrap; //文本不换行属性 这里附带说一下W3Cschool中对white-space的解释: white- ...

  10. Docker 架构详解 - 每天5分钟玩转容器技术(7)

    Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...