Android:decodeFile始终为内部存储中的文件返回null

Jah*_*mic 19 android bitmapfactory

我有一个文件本地保存到应用程序的私有存储中.我已经验证它存在,但每当我调用BitmapFactory.decodeFile时它总是返回null.

如果我将文件保存为资源并使用ImageView setImageResource,它总是显示正常.

问题是什么?

这是片段:

filename = "test.png";

if (doesFileExist(filename))
    Bitmap bMap = BitmapFactory.decodeFile(filename);
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

Bitmap bMap = BitmapFactory.decodeFile(getFilesDir().getPath()
                    + filename);
Run Code Online (Sandbox Code Playgroud)

Jah*_*mic 32

此问题在此之前已得到解答: BitmapFactory.decodeFile返回null,即使图像存在

这正是我所需要的:

String fname=new File(getFilesDir(), "test.png").getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

  • 你应该回答你自己的问题.我带着同样的问题登陆了这个问题并得到了你的解决方案.你提到答案的问题不在我最初的搜索中.干杯! (9认同)

rha*_*vey 5

不要使用 BitmapFactory.decodeFile,而是尝试使用 InputStream:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    if(resultCode == RESULT_OK){          
        Uri selectedImage = imageReturnedIntent.getData();
        InputStream imageStream = getContentResolver().openInputStream(selectedImage);
        Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
Run Code Online (Sandbox Code Playgroud)