当前位置: 移动技术网 > IT编程>移动开发>Android > android获取相册图片和路径的实现方法

android获取相册图片和路径的实现方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

寒假里难忘的一件事,娟子的彪悍爱情番外,印度航母下水

android开发获取相册图片的方式网上有很多种,这里说一个android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题。

比如:managedquery()现在已经被getcontentresolver().query()替代了,不过它们的参数都是一样的

再比如android4.4后intent(intent.action_get_content);和intent(intent.action_open_document);两个方法所得到的图片的uri是不一样的,用老的方法导致在android4.4系统获取不到图片。

 private imageview imgshow = null;
 private textview imgpath = null;
 private final int image_code = 0;
 uri bitmapuri = null;
 private final string image_type = "image/*";

imgshow是一个用来显示图片的imageview控件,imgpath是用来显示获取到图片的路径的textview控件,都要在oncreate()函数里连接到对应的控件id,image_code是自定义的一个参数,可以为其它数值。

private void selectimage() {
  // todo auto-generated method stub
  boolean iskitkato = build.version.sdk_int >= build.version_codes.kitkat;
  intent getalbum;
  if (iskitkato) {
   getalbum = new intent(intent.action_open_document);
  } else {
   getalbum = new intent(intent.action_get_content);
  }
  getalbum.settype(image_type);

  startactivityforresult(getalbum, image_code);


 }

protected void onactivityresult(int requestcode, int resultcode, intent data) {

  if (resultcode != result_ok) {

   log.e("tag->onresult", "activityresult resultcode error");

   return;

  }
  bitmap bm = null;
  contentresolver resolver = getcontentresolver();
  if (requestcode == image_code) {
   try {

    uri originaluri = data.getdata();  //获得图片的uri
    bitmapuri = originaluri;
    isselectpic = true;
    bm = mediastore.images.media.getbitmap(resolver, originaluri);
    //显得到bitmap图片
    imgshow.setimagebitmap(bm);
    string[] proj = {mediastore.images.media.data};

    cursor cursor = getcontentresolver().query(originaluri, proj, null, null, null);
    if(cursor.movetofirst()) {
     int column_index = cursor.getcolumnindexorthrow(mediastore.images.media.data);
     string path = cursor.getstring(column_index);
     imgpath.settext(path);
    }
    cursor.close();
   } catch (ioexception e) {
    log.e("tag-->error", e.tostring());
   }

  }

 }

这里用

getcontentresolver().query()替代老的managedquery(),还在一开始判断编译的sdk版本是否为android4.4以后的版本
boolean iskitkato = build.version.sdk_int >= build.version_codes.kitkat;
是的话就用新的方法,否则用老的方法,在button控件里调用selectimage()函数就能从图片库获取图片。
要想通过uil得到相应的bitmap图片,可以通过以下方法:

private bitmap decodeuriasbitmap(uri uri) {
  bitmap bitmap = null;
  try {
   bitmap = bitmapfactory.decodestream(getcontentresolver().openinputstream(uri));
  } catch (filenotfoundexception e) {
   e.printstacktrace();
   return null;
  }
  return bitmap;
 }

传入获取到的图片的uri就能得到相应的bitmap图片。

以上就是本文的全部内容,希望对大家学习android软件编程有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网