【问题标题】:Saving picture gives FileNotFoundException ()保存图片给出FileNotFoundException()
【发布时间】:2016-11-30 12:25:00
【问题描述】:

我是 android camera API 的新手,代码中有一个 PictureCallback 调用:

     PictureCallback jpegCallback = new PictureCallback() {
          public void onPictureTaken(byte[] data, Camera camera) {
             // Save the image JPEG data to the SD card
             FileOutputStream outStream = null;
             try {
                String path = Environment.getExternalStorageDirectory() +"\test.jpg";

            outStream = new FileOutputStream(path);
            outStream.write(data);
            outStream.close();
         } catch (FileNotFoundException e) {
            Log.e(TAG, "File Note Found", e);
         } catch (IOException e) {
            Log.e(TAG, "IO Exception", e);
         }
      }
   };

指出这一行的异常:

outStream = new FileOutputStream(path);

由于我是 Android 世界的新手,所以我不知道这 Environment.getExternalStorageDirectory() 究竟在哪里指出。

异常说:

Java.io.FileNotFoundException:/storage/emulated/0 est.jpg:打开 失败:EACCES(权限被拒绝)

但在我的清单中:

<uses-feature android:name="android.hardware.Camera"/>
   <uses-permission android:name="android.permission.CAMERA"/>

编辑:我修复了

的路径

String path = Environment.getExternalStorageDirectory() +"/test.jpg";

但还是给了我:

java.io.FileNotFoundException:/storage/emulated/0/test.jpg:打开 失败:EACCES(权限被拒绝)

【问题讨论】:

    标签: android file


    【解决方案1】:

    java.io.FileNotFoundException:/storage/emulated/0/test.jpg:打开 失败:EACCES(权限被拒绝)

    你一定忘了添加

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    【讨论】:

    • 谢谢兄弟,我支持你,但我会接受@GabeSechan 的回答。 :)
    【解决方案2】:

    Android 使用 linux。路径分隔符是 / 而不是 \。同样\t 放入一个标签,如果你想要一个实际的\,你需要使用\\t

    【讨论】:

    • 你好这次异常是java.io.FileNotFoundException: /storage/emulated/0/test.jpg: open failed: EACCES (Permission denied)
    • 因为你没有在AndroidManifest中添加权限?
    • 评论前我已经看过了;读写内部和外部存储的权限
    • 您还需要 WRITE_EXTERNAL_STORAGE。然后在 kit Kat 和 layer 你会遇到问题,因为 sd 卡根是不可写的,你需要把它放在某个地方
    • @GabeSechan,在您的答案中调用它,从技术上讲,您的“评论”首先解决了它。再加上你“纠正”了我的道路
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多