1

現在、私はこれを使用しています:

String path="/sdcard/media/audio/ringtones/";
               String filename=soundname+".ogg";

               boolean exists = (new File(path)).exists();
               if (!exists){new File(path).mkdirs();}

               FileOutputStream save;
               try {
               save = new FileOutputStream(path+filename);
               save.write(buffer);
               save.flush();
               save.close();
               } catch (FileNotFoundException e) {
               // TODO Auto-generated catch block
               return false;
               } catch (IOException e) {
               // TODO Auto-generated catch block
               return false;
               }

               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, soundname);
               values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
               values.put(MediaStore.Audio.Media.ARTIST, "...");
               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
              this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);


              String i = "Saved as Ringtone.";
               Toast.makeText(getApplicationContext(), i,
               Toast.LENGTH_LONG).show();

             return true;


              }

しかし、日食は、私が使用する必要があると言います:

Environment.getExternalStorageDirectory().getPath()

追加してみましたが、保存されず、どうすればよいかわかりません。誰でもこれを実装するのを手伝ってくれますか?

4

3 に答える 3

6

それは問題ではありません。

ただし、次の行を追加できます。

@SuppressLint("SdCardPath")

その上

String path="/sdcard/media/audio/ringtones/";

(または)単に変更する

String path="/sdcard/media/audio/ringtones/";

に:

String path=android.os.Environment.getExternalStorageDirectory().getPath() + "/media/audio/ringtones/";
于 2013-08-22T12:11:21.237 に答える
1

それを抑制することでそれを避けることができます:

@SuppressLint("SdCardPath")

しかし、あなたは使うべきですEnvironment.getExternalStorageDirectory()

お気に入り

String PathToSdcard = Evironment.getExternalStorageDirectory().getPath()+"/media/audio/ringtone"
于 2013-08-22T12:21:03.653 に答える
0

外部ストレージのEnvironmentパスが"/sdcard/". 使ってみて

File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)

そして、いくつかのリファクタリング:

if (!dir.exists()) dir.mkdirs();
File file = new File(dir, filename);
save = new FileOutputStream(file);
于 2013-08-22T12:20:58.130 に答える