0

問題があります。メインのアクティビティ内に着信音を設定したいのですが、このチュートリアルを読みました:http ://androidgenuine.com/?tag=set-as-ringtone-android 、しかし関数の保存が機能していません。特定のファイルを作成できません。関数がfalseを返します。新しいファイルを作成する部分だけを書き直しましたが、この部分でも機能していません。ここにコードがあります。何が問題なのですか(falseを返し、ファイル以外が作成されました)。

    public boolean save2(int ressound){

    String path="/sdcard/sounds/";
    String filename="ring.mp3";
    byte[] buffer = null;
    FileOutputStream save;
    InputStream fIn = getBaseContext().getResources().openRawResource(ressound);
    int size=0;
    try {
        size=fIn.available();
        buffer = new byte[size];
        fIn.read(buffer);
        fIn.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        save = new FileOutputStream(path+filename);
        save.write(buffer);
        save.flush();
        save.close();
        return true;
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return false;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return false;
    }
}

ご協力いただきありがとうございます

4

1 に答える 1

2

指定したディレクトリが存在しないか、マニフェストに適切な権限が設定されていない可能性があると推測できます。

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

にあるドキュメントから次のように構築する必要があります

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");

// Make sure the Pictures directory exists.
path.mkdirs();

また、外部ストレージがマウントされているかどうかも確認する必要があります。

String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        mExternalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        mExternalStorageAvailable = true;
        mExternalStorageWriteable = false;
    } else {
        mExternalStorageAvailable = mExternalStorageWriteable = false;
    }
于 2012-08-05T20:38:47.463 に答える