android获取相册图片和路径的实现方法
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软件编程有所帮助。
上一篇: php基础练习--简单验证码实现
推荐阅读
-
android获取相册图片和路径的实现方法
-
Android中使用imageviewswitcher 实现图片切换轮播导航的方法
-
Android5.x中的阴影效果elevation和translationZ的实现方法
-
Android实现拍照截取和相册图片截取
-
Python实现通过文件路径获取文件hash值的方法
-
Android获取和读取短信验证码的实现方法
-
Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法
-
Android5.x中的阴影效果elevation和translationZ的实现方法
-
Android获取屏幕或View宽度和高度的方法
-
Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法