2012-06-25 10 views
7

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

これらの権限では、MediaPlayerはオーディオファイルにアクセスできません。

私はMediaPlayerのことで、それが読みやすくするためにダウンロードした音声ファイルのパーミッションを設定するにはどうすればよい
java.io.IOException: Prepare failed.: status=0x1 

マイアプリのターゲットのAPIレベル8

:失敗は次のようにlogcatに示されていますか?ところで

、私が使用してファイルを作成しています:

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 
+0

私はラインを変更するときに、「たFileOutputStreamアウト= activity.openFileOutput(fRecording、活動.MODE_WORLD_READABLE); " Eclipseでエラーメッセージが表示されています。「ContextWrapperタイプのメソッドopenFileOutput(String、int)は引数(File、int)に適用できません」 –

+0

FileOutputStream out = activity.openFileOutput( "

+0

ファイルは正しいアクセス許可で作成されますが、キャッシュからアプリケーション内のファイルに「自動的に」移動されているようです。私は新しい質問を始めます。 –

答えて

3
  • openFileOutput()にファイルの名前と操作 モードを呼び出します。これにより、許可 MODE_WORLD_READABLEFileOutputStreamが返されます。

  • write()でファイルに書き込みます。

  • ストリームをclose()で閉じます。例えば

:APIで9 Fileオブジェクトを開始(コードtxtファイルについて、あなたのケースでは、そのオーディオファイルは、それに応じて変更を行います)

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

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE); 
fos.write(string.getBytes()); 
fos.close(); 
+0

ファイルを渡す場合は、ファイル名も必要です。 'getFileStreamPath(FILENAME);で得られるもの – Martin

2

も(setReadableメソッドを持っていsetWritableおよびsetExecutable)。それは(すなわち、それはあなたのケースで-rw-r--r--になった)バージョンは、同様にすべてのユーザーの読み取りアクセス許可を設定するために使用できる2つの引数です:

File file = new File("path_to_your_file"); 
file.setReadable(true, false); 
関連する問題