从路径获取图像

时间:2017-04-14 09:58:37

标签: java android

我想从专辑中获取图片,但是当我选择任何图片时,它都不显示并停止。我用我的手机测试,我认为问题可能是我用我的代码设置了错误的路径。但我无法找到它的位置。 案例100:拍照动作,它可以工作,案例101:选择图片动作。

这是我的onActivityResult

ident :: Parser String
ident = Parser f
  where
    f :: [Token] -> Either SyntaxError (String, [Token])
    f (Id x : toks) = Right (x, toks)
    f (Key x : _) = err $ "Identifier expected, got keyword '" ++ x ++ "'"
    f [] = err "Identifier expected, got EOF"

(+++) :: Parser a -> Parser b -> Parser (a, b)
(+++) pa pb = Parser $ \toks1 -> do (x, toks2) <- runP pa toks1
                                    (y, toks3) <- runP pb toks2
                                    return ((x, y), toks3)
...

这是我的converUri

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

    if (resultCode == Activity.RESULT_OK ) {
            switch (requestCode)
            {
                case 100:
                    Intent it = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    sendBroadcast(it);
                    break;
                case 101:
                    imgUri = convertUri(data.getData());

                    break;
            }
        showImg();
    }
    else {
        Toast.makeText(this , requestCode==100? "no take the pic" : "no choose the pic" , Toast.LENGTH_LONG).show();
    }
}

这是我的showImag

Uri convertUri(Uri uri){
    if(uri.toString().substring(0,7).equals("content"))
    {
        String[] colName = {MediaStore.MediaColumns.DATA};
        Cursor cursor = getContentResolver().query(uri,colName,null,null,null);
        cursor.moveToFirst();
        uri = Uri.parse("file://"+ cursor.getString(0));
    }
    return  uri;
}

1 个答案:

答案 0 :(得分:0)

尝试获取文件系统路径时,您的方法错误。

最好从onActivityResult中使用data.getData()uri。

Bitmap bmp = BitmapFactory.decodeFile(imgUri.getPath(),option);

更改为:

InputStream is = getContentResolver().openInputStream(data.getData());
Bitmap bmp = BitmapFactory.decodeStream(is, option);

第一次通话时也一样。您只能使用is一次。