7

MediaPlayer でアクセスする必要がある Android アプリケーションのキャッシュにオーディオ ファイルをダウンロードしています。ファイルは -rw------- の権限で作成されます (Eclipse のファイル エクスプローラーに表示されます)。

これらのアクセス許可では、MediaPlayer はオーディオ ファイルにアクセスできません。失敗は logcat に次のように表示されます。

java.io.IOException: Prepare failed.: status=0x1

私のアプリは API レベル 8 を対象としています。

ダウンロードしたオーディオ ファイルのアクセス許可を MediaPlayer で読み取れるように設定するにはどうすればよいですか?

ちなみに、私は次のファイルを作成しています:

FileOutputStream out = new FileOutputStream(fRecording);

MODE_WORLD_READABLE としてファイルを作成しようとすると、ファイルが作成されません。

FileOutputStream out = activity.openFileOutput(fRecording.getAbsolutePath(), Activity.MODE_WORLD_READABLE);

openFileOutput を使用した logcat エラーは次のとおりです。

java.lang.IllegalArgumentException: File /data/data/com.calltrunk.android/cache/727adda7-0ef1-490f-9853-fe13ad1e9416 contains a path separator
4

2 に答える 2

4

API 9 以降、FileオブジェクトにはsetReadableメソッドがあります (setWritableおよびもsetExecutable)。2 つの引数バージョンを使用して、すべてのユーザーの読み取り許可も設定できます (つまり-rw-r--r--、あなたの場合になります):

File file = new File("path_to_your_file");
file.setReadable(true, false);
于 2015-02-10T11:47:42.673 に答える
3
  • openFileOutput()ファイルの名前と動作モードで呼び出します。FileOutputStreamこれにより、権限 のあるが返されますMODE_WORLD_READABLE

  • を使用してファイルに書き込みますwrite()

  • でストリームを閉じますclose()

例: (txtファイルのコード、あなたの場合、そのオーディオファイルはそれに応じて変更を加えます)

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
fos.write(string.getBytes());
fos.close();
于 2012-06-25T12:13:23.823 に答える