2016-06-12 31 views
0

我正在开发一个Android应用程序。在我的应用程序中,我想让用户在用户点击上传按钮时选择多个。所以我用this library。我可以成功弹出对话框并选择多个文件。但问题是,当我将所选图像的URI转换为onActivityResult中的位图时,它给我错误。请参阅下面的我的场景。无法在Android中使用Poly Picker多图像选取器库

我这是怎么弹出选择器的活动:

private void getImages() { 
     Intent intent = new Intent(GalleryActivity.this, ImagePickerActivity.class); 
     nl.changer.polypicker.Config pickerConfig = new nl.changer.polypicker.Config(R.color.white,R.color.blue,10,R.color.green); 
     ImagePickerActivity.setConfig(pickerConfig); 
     startActivityForResult(intent, INTENT_REQUEST_GET_IMAGES); 
    } 

这是怎么了转换成位图上的结果:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == Activity.RESULT_OK) { 
      if (requestCode == INTENT_REQUEST_GET_IMAGES) { 
       Parcelable[] parcelableUris = data.getParcelableArrayExtra(ImagePickerActivity.EXTRA_IMAGE_URIS); 

       if (parcelableUris == null) { 
        return; 
       } 

       // Java doesn't allow array casting, this is a little hack 
       Uri[] uris = new Uri[parcelableUris.length]; 
       System.arraycopy(parcelableUris, 0, uris, 0, parcelableUris.length); 

       if (uris != null) { 
        bitmaps = new ArrayList<Bitmap>(); 
        for (Uri uri : uris) { 
         try{ 
          if(uri!=null) 
          { 
           Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
           bitmaps.add(bmp); 
          } 
         } 
         catch (IOException e) 
         { 
          Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_SHORT).show(); 
         } 
        } 
        if(bitmaps.size()>0) 
        { 
         confirmFileUpload(); 
        } 
       } 
      } 
     } 
    } 

正如你可以在上面看到我的代码,将达到尝试catch语句的异常块。

这是错误的例子烤:

enter image description here

那种错误掷我选择的任何图像。我的代码出了什么问题,我该如何解决它?

+0

什么路径?我已经显示完整的代码。你是什​​么意思请@LonnieZamora? –

+0

没有,这是由图书馆处理。你可以看看我提到的链接。 @LonnieZamora –

回答

0

最后我找到了解决方案。当我解析URI字符串我的问题是,格式是这样的:

/sdcard/download/filename.png 

的URI的字符串必须是以下格式:

file:///sdcard/download/filename.png 

没有内容提供商找到异常抛出,因为我的URI字符串没有必要的前缀。所以我将uri转换为字符串。然后添加前缀。然后我将该字符串解析回URI。然后它成功运行。