我正在尝试获取用户从图片库中选择的图像的FileInputStream
对象。这是由android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
返回的android URI
。
content://media/external/images/media/3
当我尝试从这个对象构造一个Java URI对象时,我收到一个IllegalArgumentException异常,异常描述为“URI中预期的文件方案:content://media/external/images/media/3”,而Android URI显示方案为content。
更新:原问题未找到解决方案。但是,如果您想要图片库中图像的字节流,可以使用此代码。Bitmap bitmap = Media.getBitmap(getContentResolver(), imageUri);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
ByteArrayInputStream fileInputStream = new ByteArrayInputStream(bytes.toByteArray());
huri = new java.net.URI(URLEncoder.encode(auri.toString(), "UTF-8"));
。请注意不要改变原文意思,并尽可能使翻译通俗易懂。 - Jeffrey Blattmana.n.Uri
,空格并没有被编码。你可以自己试试看:Uri.parse("content://foo.bar.com/0?file=my goodness").toString()
。你是对的,Javadocs 中确实说它返回一个已编码的字符串,但并没有说明使用了何种编码方式。 - Jeffrey Blattman