从手机获取图片让WebView支持本地上传图片

一,从本地获取相册中的图片,并获取图片的URI

从本地选择图片上传到服务器时,首先要打开本地图片或文件管理器选择要上传的文件,代码如下
  1. Intent intent =newIntent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent, intentType);
    

      

然后重写onActivityResult()方法获取图片实际路径
  1. @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原本是"

content://com.android.providers.media.documents/document/image:8191

",然后通过Uri uri= data.getData();所拿到的uri却变成了"

content://com.android.providers.media.documents/document/image%3A8191

",image后边的冒号自动转义了,而且uri也跟一般所见"

content://media/external/images/media/63

"这样的uri格式不同,网上查找后终于找到解决方法:
  1. Intent i =newIntent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(Intent.createChooser( i,"选择图片"),WebViewActivity.FILECHOOSER_RESULTCODE );

     

换成以上代码启动选择图片就会调用系统默认的图片管理软件,选择,返回的uri就是标准的uri了。





posted @ 2014-12-30 11:50  fighter  阅读(1824)  评论(0编辑  收藏  举报