2016-08-28 4 views
2

sd 카드의 내용을 읽을 수는 있지만 변경할 수는 없습니다. android:name="android.permission.WRITE_EXTERNAL_STORAGE" 을 추가하고 앱에 런타임 권한을 구현했습니다.휴대용 SD 카드에 쓰기가 가능합니까? (Android 6 marshmallow)

(내가 MP3 파일 태그를 편집하기 위해 judiotagger를 사용하고 있습니다. 내부 저장소의 파일에는 문제가 없지만 SD 카드의 파일을 편집하면 CannotWriteException이 발생합니다. 파일/저장소/DED3-1EF9/음악을 변경할 수 없습니다. /abc.mp3)

거의 모든 관련 주제를 읽었지만 그 중 일부는 저를 도왔습니다.

ps : 저는 우리가 SD 카드의 응용 프로그램 특정 디렉토리에서 할 수 있습니다.

답변

0

휴대용 SD 카드에 쓰기가 가능합니까?

File, FileOutputStream 및 관련 파일 고유 클래스를 통하지 않음.

ACTION_OPEN_DOCUMENT을 Android 4.4 이상에서 사용할 수 있으므로 사용자가 Storage Access Framework을 통해 작업 할 콘텐츠를 선택할 수 있습니다. Uri을 사용하면 InputStream을 얻고 나중에는 OutputStream을 사용하여 콘텐츠를 읽고 쓸 수 있습니다.

+0

미안하지만 어쩌면 답할 수 있습니다. 어떻게하면 사용자가 제 3 자 앱에 파일 관리 (삭제, 편집, 생성) 권한을 부여 할 수있는 기본적인 기본 API 일 수 있습니까? SD 카드를 사용하면 장치 저장소의 파일을 관리하는 것처럼 쉬운 방법입니다. API 19에서 24까지 지금까지는 존재하지 않습니다. 그저 개발자이자 Android 사용자로서 나를 좌절하게 만듭니다. 왜 그들은 그러한 API를 노출시키지 않을 것인가? –

+0

참고로 API를 사용하지 않는 이유는 SAF가 일반 자바 파일 API에 비해 단순하지 않기 때문이며 너무 엄격하여 SD 카드의 다른 위치에있는 파일을 많이 사용해야하는 경우 거의 작동하지 않습니다. ... 사실 거기에 action_open_document_tree하지만 couldnt 일을하고 거기에 대한 작은 설명서가 ... (심지어 cannt 당신이 나를 도와 ... 볼 수 https://stackoverflow.com/questions/35468298/can -an-app-get-a-permission-a-sub-from-saf-to-a-saf-tree) –

+0

@OfekRon : "왜 그런 API를 공개하지 않습니까?" - 왜 개발자 X가 Y 일을 했습니까? 스택 오버플로는 생산성이 떨어집니다. 결정적인 답을 제공 할 수있는 사람은 개발자 X 뿐이며 개발자 X는 귀하의 질문을 보지 않습니다. 스토리지 액세스 프레임 워크의 핵심 요소는 단순한 파일 (Google 드라이브/보관 용/기타 클라우드 제공 업체, 맞춤 암호화 된 컨테이너 등) 이상의 것을 지원한다는 것입니다. – CommonsWare

관련 문제