Android 压缩位图时出现异常

Android 压缩位图时出现异常,android,file-io,bitmap,compression,ioexception,Android,File Io,Bitmap,Compression,Ioexception,在我的Android项目中,我试图在给定位置将位图保存到SD卡 当我运行这个程序时,每次都会得到一个IOException,表示权限被拒绝。这是关于创建FileOutputStream的 这使我相信我缺少权限,但我包含了读取和写入外部存储。它们在my使用sdk块之前声明,并且在应用程序块之外。我还将文本读/写到应用程序中其他位置的文件中,效果很好。我当前的代码被修改以匹配我在网上找到的几个解决方案,但我无法成功保存位图文件 如果有人能指出我的错误,我将万分感激 ImageView ima

在我的Android项目中,我试图在给定位置将位图保存到SD卡

当我运行这个程序时,每次都会得到一个
IOException
,表示权限被拒绝。这是关于创建FileOutputStream的

这使我相信我缺少权限,但我包含了读取和写入外部存储。它们在my
使用sdk
块之前声明,并且在应用程序块之外。我还将
文本读/写到应用程序中其他位置的文件中,效果很好。我当前的代码被修改以匹配我在网上找到的几个解决方案,但我无法成功保存
位图
文件

如果有人能指出我的错误,我将万分感激

    ImageView imageView = (ImageView) findViewById(R.id.new_pnm_pic);
    Bitmap bm = (Bitmap)data.getExtras().get("data");
    imageView.setImageBitmap(bm);
    String outPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recruits";

    try {
          File d = new File(outPath);
          if (!d.exists())
          d.mkdirs();

          SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd-kk-mm-ss");
          String currentTime = sd.format(new Date());

          File file = new File(outPath+'/'+currentTime+".jpg");             
          FileOutputStream fOut = new FileOutputStream(file.getPath());

          bm.compress(Bitmap.CompressFormat.JPEG, 50, fOut);

          fOut.flush();
          fOut.close();

       }
   catch(IOException ioe){
     Toast.makeText(this, "Nice try but didn't work", Toast.LENGTH_SHORT).show();
        }

更改此设置

File file = new File(outPath+'/'+currentTime+".jpg");


File file = new File(d+'/'+currentTime+".jpg");
并添加对清单文件的权限:-

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

编辑

在开始将映像保存到sd卡之前,我们需要检查如果使用Environment.getExternalStorageDirectory().toString()+“Recruites”;?我在getAbsolutePath()中遇到了类似的问题,解决了这个问题。做一个日志。要查看logcat中的完整路径,您是否在emulatorI上运行了此操作,Ori将输出路径更改为Environment.getExternalStorageDirectory().toString()+“/Recruites”;并使用日志进行测试,以查看我的文件使用的是以下路径W//mnt/sdcard/recruites/2013-06-01-17-26-50.jpg(23309),当我在创建日志未显示的文件输出流后尝试测试时,这意味着出现了异常。我还尝试使用一个备用构造函数FileOutputStream(文件),但仍然遇到了异常。山姆:我正在我的设备上运行这个程序。我刚刚发现如何检查异常消息,并用它来确定问题是“权限被拒绝”,但我在程序的其他地方读/写文本文件,效果很好。我尝试了该文件的替代构造函数,但它没有改变任何内容。此外,我的权限还可以,它们已经过检查,并且我对应用程序其他部分中的外部存储进行了读/写操作,没有错误。请将file.getPath()更改为file.getAbsolutePath()