Setting a custom ringtone produces FileNotFound exception?
<p>I'm using the code below and receiving the "FileNotFound" exception. Can anyone explain why this is?  I'm using the emulator to test, 2.3.3.</p>

<pre><code>private void setRingtone(){
    byte[] buffer = null;
    InputStream fIn = getBaseContext().getResources().openRawResource(R.raw.custom_ringtone);
    int size = 0;

    try {
        size = fIn.available();
        buffer = new byte[size];
        fIn.read(buffer);
        fIn.close();
    } catch (IOException e) {
        Log.d("trace", "IO 1" + e);         
    }

    String path = Environment.getExternalStorageDirectory().getPath()+"/media/ringtone/";
    String filename = "custom_ringtone.mp3";

    boolean exists = (new File(path)).exists();
    if (!exists){
        new File(path).mkdirs();
        Log.d("trace", "path added" + path);
    }else{
        Log.d("trace", "path not added" + path);            
    }

    FileOutputStream save;
    try {
        save = new FileOutputStream(path+filename);
        save.write(buffer);
        save.flush();
        save.close();
    } catch (FileNotFoundException e) {
        Log.d("trace", "FileNotFound" + e);
    } catch (IOException e) {
        Log.d("trace", "IO 2" + e);
    }

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));

    File k = new File(path, filename);

    ContentValues values = new ContentValues();
    values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
    values.put(MediaStore.MediaColumns.TITLE, "Schedule Cheer");
    values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
    values.put(MediaStore.Audio.Media.ARTIST, "One2MM");
    values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
    values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
    values.put(MediaStore.Audio.Media.IS_ALARM, true);
    values.put(MediaStore.Audio.Media.IS_MUSIC, false);

    //Insert it into the database
    Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
    getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
    Uri newUri = getContentResolver().insert(uri, values); 
    RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, newUri);

}
</code></pre>
