从相册选择图片,我从标题栏的菜单项上进行点击操作
@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.enter_album) { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, 1); } return super.onOptionsItemSelected(item); }
其中菜单项的id为enter_album,然后在onActivityResult方法中取出数据
@Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == 1 && data != null) { Uri selectedImage = data.getData(); String[] filePathColumns = {MediaStore.Images.Media.DATA}; Cursor c = getContentResolver().query(selectedImage, filePathColumns, null, null, null); c.moveToFirst(); int columnIndex = c.getColumnIndex(filePathColumns[0]); String imagePath = c.getString(columnIndex); c.close(); } } }
拿到的imagePath即为图片路径,并且在其他手机上都能够打印出该字符串,吐槽,除了小米!
解决办法:http://blog.csdn.net/iamwutianbao/article/details/52459509
有大神已经解决,封装了一个工具类,MiPictureHelper,具体原因除了小米,用ACTION_PICK,都能得到一个图片的绝对路径。如果是小米,用ACTION_PICK,就需要去转化了。但是,小米用ACTION_GET_CONTENT或者ACTION_OPEN_DOCUMENT,低版本,也能得到绝对路径。。最后统一的处理方法就是,用ACTION_GET_CONTENT,然后分版本处理,低版本还是旧的方法,高版本,用pictureHelper工具类处理得到绝对路径。
特此记录一下,再次附上原文地址:http://blog.csdn.net/iamwutianbao/article/details/52459509