2012-12-16 28 views
0

我做了一个程序,用户在这个应用程序中显示他想要加载的图片。当用户想要加载图片时,他可以选择他想要使用什么样的文件浏览器:从系统库中获取图像。为什么不工作?

enter image description here

一切正常,但如果我选择“画廊”和标记我的形象,这是行不通的。只有当我选择“画廊”时才会发生。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode == RESULT_OK){ 
       String path = data.getData().getPath(); 
       try { 
     loadedimage = BitmapFactory.decodeFile(sciezka_z_obrazem); 
      } 
        catch (Exception e) { 
        } 
      } [...] 

从画廊挑选图片后,loadedimage为空。 当我使用Dropbox或“我的文件”时,一切正常。

回答

0

我猜你应该使用

Uri mUri = data.getData(); 

在库文件的情况下,返回的形式内容://,而不是文件://

所以,你应该使用URI而不是做上的getPath URI

编辑: 使用URI解码像下面

InputStream is = getContentResolver().openInputStream(uri); 

loadedimage = BitmapFactory.decodeStream(is) 
+0

但如果我使用decodeFile来加载图像,我必须毕竟使用String。那么,当我使用Uri而不是String时,有什么区别? – Piotrek

+0

检查编辑。 – nandeesh

0

你应该试试这个。
File filePath = new File(path);
然后使用
Uri.fromFile(filePath)
这将设置内容,可能是openend。

相关问题