Raf*_*fiq 3 java android android-emulator
我试图从外部存储(图片目录)加载.gif图像,但我使用以下代码获取'文件未找到异常'.
InputStream mInputStream = null;
AssetManager assetManager = getResources().getAssets();
try {
mInputStream = assetManager.open(getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath().concat("/01.gif"));
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我也测试过使用手动路径,但得到了相同的异常
mInputStream = assetManager.open("file:///mnt/sdcard/Android/data/com.shurjo.downloader/files/Pictures/01.gif");
Run Code Online (Sandbox Code Playgroud)
在清单文件中有SD卡的读/写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
请帮助我如何从外部存储打开文件作为InputStream.提前致谢.
注意:我在模拟器上测试了它,并且在Pictures文件夹下有一个文件01.gif(请参见手册路径).我可以创建目录并将文件放在这些目录中,但无法通过Input Stream访问这些文件.
Raj*_*esh 10
AssetManager
用于访问应用程序包的assets文件夹中的文件.它不能用于访问外部存储中的文件.
您可以使用以下内容:
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!");
}
Run Code Online (Sandbox Code Playgroud)
另请查看可用的示例代码 getExternalFilesDir
更新自:这个
归档时间: |
|
查看次数: |
9688 次 |
最近记录: |