Android 4.4에서 Play 스토어의 앱은 앱의 특정 디렉토리 (예 : /storage/extSdCar/Android/data/com.example.myapp/)에만 쓸 수 있으며 앱은이 디렉토리 이외의 다른 곳에서 글을 쓸 수 없습니다 SD 카드. 그래서 새로운 SAF API를 탐색하여 SAF를 사용하여 앱 특정 디렉토리 이외의 마이크로 SD 카드에 쓸 수 있는지 확인합니다.SAF (Storage Access Framework)가 Android 4.4 (KitKat)에서 SD 카드 쓰기 문제를 해결합니까?
예제 공급자 및 클라이언트 응용 프로그램을 만들어 SAF를 구현했습니다.
row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(new File("/storage/extSdCard")));
row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE | Root.FLAG_SUPPORTS_RECENTS | Root.FLAG_SUPPORTS_SEARCH);
내 클라이언트에 다음과 같은 의도를 만든 내가 SD 카드의 전체 내용을 검색 할 수 있어요 : 내 공급자, 나는 queryRoots에 다음 코드를 구현하여 SD 카드의 전체 내용을 보여 주려고 SAF의 시스템 UI에서 내 공급자를 통해
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_TITLE, "test.txt");
startActivityForResult(intent, WRITE_REQUEST_CODE);
내가 저장 버튼을 클릭
, 나는 나누었다 내가 앱 특정 디렉토리로 이동 (/storage/extSdCar/Android/data/com.example "문서를 저장하지 못했습니다"는 토스트 오류를 얻고있다. myprovider /)를 사용하여 문서를 저장할 수 있습니다. 또한 Intent.CATEGORY_WRITABLE과 같은 의도가 없으므로 편집 할 수있는 문서 만 얻을 수 있습니다. 아래의 점을 도와주세요 :1. 우리는 SAF를 사용해도 마이크로 SD 카드에 대한 여전히 WRITE 제한이 동일하게 남아 있습니다. 이 올바른지?
2. 이미 만들었거나 삭제하거나 microSD 카드의 내 앱 디렉토리 외부에서 이미 사용 가능한 파일을 수정할 수있는 방법이 있습니까?
3. 사진, 비디오, 음악, 문서 등과 같은 일반 사용자 파일에 대한 FLAG_SUPPORTS_WRITE 플래그를 결정하는 사람은 누구입니까?
답장을 보내 주셔서 감사합니다. SAF의 시스템 UI를 시작하지 않고 마이크로 SD 카드에있는 파일에 쓰기 액세스 권한을 얻는 방법이 있습니까? 파일 관리자와 같은 응용 프로그램이 시스템 UI를 시작하지 않고 마이크로 SD 카드의 특정 파일을 편집하거나 삭제할 수 있습니까?시스템 UI는 다시 파일 용 파일 브라우저와 비슷하기 때문에 파일 관리자 응용 프로그램은 어떻게 마이크로 SD 카드에있는 특정 파일에 대해 쓰기/삭제 작업을 수행 할 수 있습니까? –
스토리지 액세스 프레임 워크는 민감한 사용자 데이터에 대한 액세스를 중재하기 때문에 현재 쓰기 권한을 부여하기 전에 사용자 확인이 필요합니다. OEM에서 제공 한 파일 관리자 응용 프로그램이 있습니까? 내장 된 앱은 기기에 직접 액세스하기 위해 추가 권한을 사용할 수 있습니다. –
아니요. OEM에서 제공 한 앱이 아닙니다. Play 스토어에서 제공되는 타사 앱입니다. 나에게 아직도 불분명하다. 왜이 제약이 내부 저장 장치가 아닌 microSD 카드에서만 구현 되는가? 내부 메모리에도 "잠재적으로 민감한 사용자 데이터"가있을 것이며이 제한이 내부 메모리에 적용되지 않는 이유가 궁금합니다. 마이크로 SD 카드에만 WRITE 제한을 부과함으로써 어떤 이점을 볼 수 있습니까? –