I am trying to load .gif image from external storage (pictures directory) but I am getting 'file not found exception' using the following code.
InputStream mInputStream = null;
AssetManager assetManager = getResources().getAssets();
try {
mInputStream = assetManager.open(getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath().concat("/01.gif"));
} catch (IOException e) {
e.printStackTrace();
}
I have also tested using manually path but got same exception
mInputStream = assetManager.open("file:///mnt/sdcard/Android/data/com.shurjo.downloader/files/Pictures/01.gif");
There is a write/read permission from the SD card in menifest file
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Please help me how can I open a file as InputStream from external storage. Thanks in advance.
Note: I have tested it on emulator and there is a file 01.gif under Pictures folder (please see manual path). I can create directories and put files in those directories but can not able to access those files though Input Stream.
AssetManager
is for accessing the files in the assets folder of the application package. It cannot be used to access files in the external storage.
You can use the following:
final String TAG = "MyAppTag";
File picturesDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = null;
final int readLimit = 16 * 1024;
if(picturesDir != null){
imageFile = new File(picturesDir, "01.gif");
} else {
Log.w(TAG, "DIRECTORY_PICTURES is not available!");
}
if(imageFile != null){
mInputStream = new BufferedInputStream(new FileInputStream(imageFile), readLimit);
mInputStream.mark(readLimit);
} else {
Log.w(TAG, "GIF image is not available!");
}
Please also take a look at the sample code available in getExternalFilesDir
Update from : this
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With