I’m trying to get from an Android Uri to a byte array.
I have the following code, but it keeps telling me that the byte array is 61 bytes long, even though the file is quite large – so I think it may be turning the Uri string into a byte array, rather than the file 🙁
Log.d(LOG_TAG, "fileUriString = " + fileUriString);
Uri tempuri = Uri.parse(fileUriString);
InputStream is = cR.openInputStream(tempuri);
String str=is.toString();
byte[] b3=str.getBytes();
Log.d(LOG_TAG, "len of data is " + imageByteArray.length
+ " bytes");
Please can someone help me work out what to do?
The output is “fileUriString = content://media/external/video/media/53” and “len of data is 61 bytes”.
Thanks!
is.toString()will give you a String representation of the InputStream instance, not its content.You need to read() bytes from the InputStream into your array. There’s two read methods to do that, read() which reads a single byte at a time, and read(byte[] bytes) which reads bytes from the InputStream into the byte array you pass to it.
Update: to read the bytes given that an InputStream does not have a length as such, you need to read the bytes until there is nothing left. I suggest creating a method for yourself something like this is a nice simple starting point (this is how I would do it in Java at least).