2011-09-16 2 views
0

amd 파일 형식으로 오디오 데이터를 sdcard에 쓰고 있습니다.응용 프로그램에 개인적으로 sdcard에 파일 쓰기 android

File file = new File(dir, "test.amr"); 
    try { 
     FileOutputStream f = new FileOutputStream(file); 
     f.write(audioData); 
     f.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

제대로 작동하지만 내 문제는 안드로이드 OS의 기본 미디어 플레이어처럼 다른 응용 프로그램에서도 마찬가지입니다.

내 질문은 내 응용 프로그램에서만 액세스 할 수있는 sdcard에 파일을 쓰는 방법입니다. 장치의 다른 응용 프로그램에는 사용할 수 없습니다.

감사합니다.

답변

2

SD 카드의 모든 파일은 모든 앱에서 액세스 할 수 있습니다.

파일을 비공개로 유지하려면 응용 프로그램의 로컬 디렉터리에 파일을 만듭니다. 다음 미디어 플레이어에 표시 (안)하지 않습니다 내부 파일, SD 카드의 폴더에 빈 ".nomedia"파일을 만들 :

String dir = getPackageManager().getPackageInfo("com.example.app", 0).applicationInfo.dataDir; 

기타 옵션 : 응용 프로그램의 개인 폴더의 위치에 의해 결정된다.

+0

덕분에 음악 플레이어에 표시되지 않습니다라는 이름의 파일을 포함하는 모든 폴더, 즉 좋은 해결책입니다하지만 난 어떤 확장 또는'.nomedia를 제공 할 수 있습니다 '이 유일한 옵션입니다. – Rishi

2

SD 카드의 파일은 어떤 방식 으로든 액세스 할 수 있으며 변경할 수 없습니다. internal storage

파일을 장치의 내부 저장소에 직접 저장할 수 있습니다. 기본적으로 내부 저장소에 저장된 파일은 응용 프로그램의 개인 파일이며 다른 응용 프로그램은 해당 파일에 액세스 할 수 없습니다 ( 사용자도 마찬가지 임).

1

API 9 (android 2.3) 이상에서도 가능하다고 생각합니다. 2.3부터는 StorageManager이라는 새로운 클래스가 제공됩니다. OBB 파일 시스템이 사용자의 요구를 충족시킬 수 있습니다. 죄송합니다. Android에서 친환경적이지만 좋은 예는 제공 할 수 없습니다. See the official document here

+0

감사합니다 ... getExternalFilesDir()에 의해 지정된 디렉토리에 OBB 압축 해제 된 데이터의 모든 데이터 파일을 저장하는 방법에 대한 아이디어. –

0

SD 카드에 폴더를 만들고 거기에 파일을 저장하십시오.

해당 폴더에있는 파일을 숨기려면 해당 폴더에 .nomedia이라는 파일을 만들어 다른 응용 프로그램에 나열되지 않도록하십시오.

.nomedia는 미디어 서버에서 스캔되지 않으며, 따라서 등

관련 문제