一,从本地获取相册中的图片,并获取图片的URI
从本地选择图片上传到服务器时,首先要打开本地图片或文件管理器选择要上传的文件,代码如下
-
Intent intent =newIntent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, intentType);
然后重写onActivityResult()方法获取图片实际路径
-
@Override protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){ if(requestCode == FILECHOOSER_RESULTCODE){ if(null== mUploadMessage){ return; } Uri result = data ==null|| resultCode != RESULT_OK ?null: data.getData(); if(result ==null){ mUploadMessage =null; return; } String filename = getRealPathFromURI(result); if(filename !=null){ result =Uri.fromFile(newFile(filename)); } mUploadMessage.onReceiveValue(result); mUploadMessage =null; } }
我们的目标是通过获取到的URI用CursorLoader加载到Cursor中,然后去到path,网上基本上都是这样使用的,最近在android4.4上测试出现了问题
通过以上代码可以获取到URI,可是拿不到path。
所选择的图片URI原本是"
",然后通过Uri uri= data.getData();所拿到的uri却变成了"
",image后边的冒号自动转义了,而且uri也跟一般所见"
"这样的uri格式不同,网上查找后终于找到解决方法:
content://com.android.providers.media.documents/document/image:8191
content://com.android.providers.media.documents/document/image%3A8191
content://media/external/images/media/63
-
Intent i =newIntent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(Intent.createChooser( i,"选择图片"),WebViewActivity.FILECHOOSER_RESULTCODE );
换成以上代码启动选择图片就会调用系统默认的图片管理软件,选择,返回的uri就是标准的uri了。