2012-06-25 3 views
7

Android 애플리케이션의 캐시에 오디오 파일을 다운로드하고 MediaPlayer에서 액세스해야합니다. 이 파일은 -rw ------- (Eclipse의 파일 탐색기에서 볼 수 있듯이) 권한으로 작성됩니다.파일 권한을 MODE_WORLD_READABLE로 설정하는 방법

이러한 사용 권한을 사용하면 MediaPlayer에서 오디오 파일에 액세스 할 수 없습니다. 실패는 로그 캣에 표시됩니다 :

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

내 애플 타겟 API 레벨 8

어떻게이 MediaPlayer를하여 읽을 수 있도록 다운로드 한 오디오 파일의 권한을 설정합니까? 내가 MODE_WORLD_READABLE로 파일을 만들려고 할 때

FileOutputStream out = new FileOutputStream(fRecording); 

, 어떤 파일이 생성되지 않습니다 :

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

openFileOutput를 사용하는 로그 캣 오류가 그런데

, 내가 가진 파일을 생성하고 :

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()으로 스트림을 닫습니다. 예를 들어

:가 (코드 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

API 9 File 객체 시작은 setReadable 방법 (도 setWritable있다 및 setExecutable). 그것은 (즉, 그것은 귀하의 경우 -rw-r--r--된다) 버전뿐만 아니라 모든 사용자에 대해 읽기 권한을 설정하는 데 사용할 수있는 두 개의 인수입니다 :

File file = new File("path_to_your_file"); 
file.setReadable(true, false); 
관련 문제