BitmapFactory:无法解码流:java.io.FileNotFoundException,即使文件实际上存在

2023-11-24

我正在创建一个简单的应用程序来拍照。这是我的代码

Button b1;
ImageView iv;
String TAG = "MAIN ACTIVITY";

File photo;
private Uri mImageUri;


private File createTemporaryFile(String part, String ext) throws Exception {


    File externalStorageDirectory = Environment.getExternalStorageDirectory();
    File tempDir = new File(externalStorageDirectory + "/cameratest/");
    if (!tempDir.exists()) {
        tempDir.mkdir();

    }
    return File.createTempFile(part, ext, tempDir);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    b1 = (Button) findViewById(R.id.button);
    iv = (ImageView) findViewById(R.id.imageView);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

            try {
                // place where to store camera taken picture
                photo = createTemporaryFile("picture", ".jpg");
                photo.delete();
            } catch (Exception e) {
                Log.v(TAG, "Can't create file to take picture!");
                Toast.makeText(getApplicationContext(), "Please check SD card! Image shot is impossible!",
                        Toast.LENGTH_SHORT).show();

            }

            mImageUri = Uri.fromFile(photo);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);

            startActivityForResult(intent, 0);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);


    if (requestCode == 0 && resultCode == RESULT_OK) {



        Log.d(TAG, mImageUri.toString());
        Bitmap bitmap = BitmapFactory.decodeFile(mImageUri.toString());
        iv.setImageBitmap(bitmap);

    }


}

如你所见,我添加了eLog.d(TAG, mImageUri.toString());在最后和 logcat 中(以及FileNotFoundException)我看到这个目录:

03-27 00:43:30.498 30526-30526/myapplication.example.falcoleo.cameratest1 D/MAIN ACTIVITY: file:///storage/emulated/0/cameratest/picture459838058.jpg
03-27 00:43:30.499 30526-30526/myapplication.example.falcoleo.cameratest1 E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: file:/storage/emulated/0/cameratest/picture459838058.jpg: open failed: ENOENT (No such file or directory)

猜猜这个目录是否存在?剧透警报, it does。而且图像并不是在之后创建的BitmapFactory.decodeFile。我真的不明白我做错了什么。一切工作正常,除了当它实际上必须显示照片时,它只是不显示它。只是空白。就像 WTF m8 一样,我只是想做好我的工作,没必要发疯,你知道。


Replace mImageUri.toString() with mImageUri.getPath().

decodeFile需要一个路径,而不是 uri 字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BitmapFactory:无法解码流:java.io.FileNotFoundException,即使文件实际上存在 的相关文章

随机推荐

  • 准备好的语句参数索引超出范围 (0 < 1 )

    我不是 Web 应用程序方面的专家 最近正在使用 servlet 为我的移动应用程序编写一个小型 Web 应用程序 我的议程是从客户端接收数据 并将其放入数据库 一切都运行良好 除了我的数据库插入语句 它试图使用PreparedStatem
  • 错误:在 Android Studio 中必须具有透明或白色的单像素框架

    我刚刚将一个项目从 eclipse 导入到 Android studio 几乎对于每第二张图像 android studio 都会给出以下错误 Error Must have one pixel frame that is either t
  • 在 iOS 7 中获取联系人

    此代码适用于 iOS 5 iOS 6 但不适用于 iOS 7 CFErrorRef error NULL ABAddressBookRef addressBook ABAddressBookCreateWithOptions NULL er
  • scikit-learn 交叉验证,带有均方误差的负值

    当我将以下代码与数据矩阵一起使用时X大小 952 144 和输出向量y尺寸 952 mean squared errormetric 返回负值 这是意外的 你有什么主意吗 from sklearn svm import SVR from s
  • Sitecore 工作流程和标准值继承的烦人问题

    现在我在 sitecore 工作流程方面遇到问题 问题如下 我的模板标准值已设置工作流程和默认工作流程字段集 工作流程状态设置为草稿 但是 每次我从此模板创建项目时 它都不会继承工作流程部分字段 所有字段都是空的 如果我手动设置项目的工作流
  • Dart:使用正则表达式删除字符串中的空格

    我正在尝试使用 Dart 和 Regexp 删除字符串中的所有空格 给定以下字符串 test test1 test2 我想得到 testtest1test2 我已经阅读了 javascript 中的一些示例 但它们似乎在 Dart 中不起作
  • 如何有效地处理 maven-3 带时间戳的快照?

    现在 maven 3 做到了放弃支持对于快照工件的 false 您似乎确实需要使用带时间戳的快照 特别是 m2eclipse 它在内部使用 maven 3 似乎受到它的影响 当快照不唯一时 更新快照不起作用 看起来最好之前练习将所有快照设置
  • 如何使用Excel VBA获取新插入记录的id?

    这似乎是一个很常见的问题 但大多数解决方案都涉及连接多个 SQL 命令 我相信这是 ADO VBA 无法完成的 不过 我很高兴在这方面被证明是错误的 我当前插入新记录 然后使用 我希望 足够的字段运行选择查询 以保证仅返回新插入的记录 我的
  • 左连接 Django ORM

    我有以下型号 class Volunteer models Model first name models CharField max length 50L last name models CharField max length 50L
  • MSDeploy 无法部署手动压缩包

    早些时候我使用 msbuild exe 构建和部署 Web 项目 现在我想在部署之前修改一些文件 所以我使用msbuild制作一个 zip包 然后解压缩它 修改一些文件然后再次压缩它并尝试使用msdeploy进行部署 问题是 它部署空文件夹
  • 在 Xcode ios 8.1 中通话时启用和禁用扬声器

    我需要在从应用程序呼叫时启用扬声器 我可以成功启用它 但无法禁用它 我正在使用这个方法 UIDevice currentDevice setProximityMonitoringEnabled NO NSLog d enable UInt3
  • 如何将具有不同第二类型的“std::pair”的可变数量传递给函数

    抱歉 由于问题的复杂性 无法解释标题本身的主要问题 需要通过各种类型的std pair如下所示的方法 foo 1 1 2 2 2 3 3 first is always int 但是 我无法找出语法如何定义foo 使用可变参数模板 这更多的
  • 在 .NET Core 中将 Word doc 和 docx 格式转换为 PDF,无需 Microsoft.Office.Interop

    我需要显示Word doc and docx浏览器中的文件 没有真正的客户端方法可以执行此操作 并且由于法律原因 这些文档无法与 Google 文档或 Microsoft Office 365 共享 浏览器不能显示Word 但可以显示PDF
  • izpack:在 Windows 上创建快捷方式

    我使用 izpack 为我的应用程序创建安装程序 到目前为止 我已经能够创建安装程序 并且在我的 Linux 机器上一切都很好 问题是 在我测试的 Windows 机器上 Win7 和 WinXP 安装程序没有显示快捷方式面板 我确实阅读了
  • 如何将 pyw 文件转换为 exe?

    我怎样才能转换pyw文件至exe使用 pyinstaller 如果不可能 我该如何使用 py2exe 来做到这一点 我在用python 3 只需运行以下命令 pyinstaller w your file name pyw 注意 运行上述命
  • 使用 Python 对多部分电子邮件进行 PGP 签名

    我目前正在尝试添加 PGP 签名支持我的小电子邮件发送脚本 它使用 Python 3 x 和python gnupg模块 签署消息的代码是 gpg gnupg GPG basetext basemsg as string replace n
  • Python、IMAP 和 GMail。将消息标记为已读

    我有一个 python 脚本 它必须获取未见的消息 对其进行处理 然后标记为已见 或已读 我在登录后执行此操作 typ data self server imap server search None UNSEEN for num in d
  • Spring OAuth2刷新令牌在刷新访问令牌后发生变化

    我创建了一个身份验证服务器和资源服务器 两者都工作正常 唯一的问题是刷新令牌 我希望它在调用后更改POST oauth token with grant type refresh token但是 spring 返回相同的刷新令牌 我想知道在
  • Java 中带有 null 参数的 Varargs

    以下代码仅使用空引用作为可变参数参数 package currenttime import java util Arrays public class Main private static void temp String str Sys
  • BitmapFactory:无法解码流:java.io.FileNotFoundException,即使文件实际上存在

    我正在创建一个简单的应用程序来拍照 这是我的代码 Button b1 ImageView iv String TAG MAIN ACTIVITY File photo private Uri mImageUri private File c