title: java.io.FileNotFoundException (Permission denied) When trying to write to the Android sdcard
body: <p>I am trying to select an image file from the photo gallery and write to the sdcard. Below is the code that results in an exception.  It appears to throw this exception when trying to create the FileOutputStream.  I have the following line added to the manifest file nested inside the application element.  I can't find a solution to the problem:</p>
  
  <p><code>&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;</code></p>
  
  <pre><code>public boolean saveSelectedImage( Uri selectedImage, int imageGroup,
          int imageNumber )
  {
      boolean exception = false;
      InputStream input = null;
      OutputStream output = null;
      if( externalStorageIsWritable() )
      {
          try
          {
              ContentResolver content = ctx.getContentResolver();
              input = content.openInputStream( selectedImage );
              if(input != null) Log.v( CLASS_NAME, "Input Stream Opened successfully");
              File outFile = null;
  
              File root = Environment.getExternalStorageDirectory(  );
              if(root == null) Log.v(CLASS_NAME, "FAILED TO RETRIEVE DIRECTORY");
              else Log.v(CLASS_NAME, "ROOT DIRECTORY is:"+root.toString());
  
              output = new FileOutputStream( root+"/Image"+ imageGroup + "_" + imageNumber + ".png" );
  
              if(output != null) Log.e( CLASS_NAME, "Output Stream Opened successfully");
              //  output = new FileOutputStream
              // ("/sdcard/Image"+imageGroup+"_"+imageNumber+".png");
  
              byte[] buffer = new byte[1000];
              int bytesRead = 0;
              while ( ( bytesRead = input.read( buffer, 0, buffer.length ) ) &gt;= 0 )
              {
                  output.write( buffer, 0, buffer.length );
              }
          } catch ( Exception e )
          {
  
              Log.e( CLASS_NAME, "Exception occurred while moving image: ");
              e.printStackTrace();
  
              exception = true;
          } finally
          {
              // if(input != null)input.close();
              // if(output != null)output.close();
              // if (exception ) return false;
          }
  
          return true;
      } else
          return false;
  
  }
  </code></pre>