raw에 저장된 sample_music1.mp3화일을    스마트폰file://sdcard/media/audio/ringtones/sample_music1.mp3 으로 

저장을 하려는데 해당 스마트폰에 같은이름으로 저장을 하려고하는데 

자꾸 저장이 안되네요 

해당 폴더에 대한 접근도 안되구요   어떻게 해야할지  이틀연속 고민인데 해결이 안되네요

부탁드리겠습니다.


  byte[] buffer=null;   
 InputStream fIn =getResources().openRawResource(R.raw.sample_music1);
// InputStream fIn  =openRawResource(R.raw.sample_music1);
  
 int size=0;   
 
 try {   
 size = fIn.available();   
 buffer = new byte[size];   
 fIn.read(buffer);   
 fIn.close();   
 } catch (IOException e) {   
 e.printStackTrace();
 }   
 
 String path="file://sdcard/media/audio/ringtones/";

 String filename="examplefile"+".mp3";   
 
 boolean exists = (new File(path)).exists();   
 if (!exists){new File(path).mkdirs();}   
  FileOutputStream save;
 try {   
                 save = openFileOutput("file://sdcard/media/audio/ringtones/sample_music1.mp3", 0);
 save.write(buffer);  // 이부분이 저장이 안됩니다
 save.flush();   
 Log.d("aa","aa");
 save.close();
 } catch (FileNotFoundException e) {   
 e.printStackTrace();
 }
 catch (IOException e) {   
 return true;   
 }      


sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));   
 
 File file = new File(path, filename);   
           values.put(MediaStore.Audio.Media.IS_MUSIC, false);   
//    

 try {
  ContentValues values = new ContentValues();
   values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
   values.put(MediaStore.MediaColumns.TITLE, "역사");
   values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
   values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
   values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
   values.put(MediaStore.Audio.Media.IS_ALARM, false);
   values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  
  Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());   
  getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + file.getAbsolutePath() + "\"", null);
  Uri newUri = getApplicationContext().getContentResolver().insert(uri, values);
  
  RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri); 
 } catch (Exception e) {
  e.printStackTrace();
  Toast.makeText(getApplicationContext(), "벨소리 설정에 실패했습니다.", Toast.LENGTH_SHORT).show();
        return false ;
 }
       Toast.makeText(getApplicationContext(), "벨소리 설정이 완료되었습니다.", Toast.LENGTH_SHORT).show();
return true;
}


}