>Java >java지도 시간 >필요한 권한이 있어도 Android 10에서 디렉터리를 만들 수 없는 이유는 무엇입니까?

필요한 권한이 있어도 Android 10에서 디렉터리를 만들 수 없는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-14 19:04:13447검색

Why Can't I Create a Directory in Android 10, Even with Necessary Permissions?

Android 10에서는 디렉토리를 생성할 수 없습니다. Android Oreo까지의 기기에서 작동합니다. 생성을 위해 두 가지 방법을 시도했습니다. 폴더.

사용
    File.mkdir():
  • 여기서 변수 성공은 항상
false
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        success =  f.mkdir();
    }
}
입니다. 이는 디렉토리가 그렇지 않음을 의미합니다. 생성되었습니다.

사용
    Files.createDirectory():
  • 이 예외의 원인:
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
    if (!(f.isDirectory())) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            try {
                Files.createDirectory(Paths.get(f.getAbsolutePath()));
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), R.string.unable_to_download, Toast.LENGTH_LONG).show();
            }
        } else {
            f.mkdir();
        }
    }
}

런타임 권한을 구현했습니다. 그리고

pzy64.pastebinpro W/System.err: java.nio.file.AccessDeniedException: /storage/emulated/0/Pastebin
pzy64.pastebinpro W/System.err:     at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:391)
pzy64.pastebinpro W/System.err:     at java.nio.file.Files.createDirectory(Files.java:674)
`

`

모두 set.

답변:

2019년 3월에 처음 공개된 것처럼 Android 10 위치에서는 기본적으로 외부 저장소나 이동식 저장소에 더 이상 접근할 수 없습니다. 여기에는 Environment.getExternalStorageDirectory() 및 Environment의 기타 메서드(예: getExternalStoragePublicDirectory())가 포함됩니다.

Android 10 및 11의 경우 매니페스트의 요소에 android:requestLegacyExternalStorage="true"를 추가할 수 있습니다. 이렇게 하면 기존 저장소 모드를 선택할 수 있으며 기존 외부 저장소 코드도 작동합니다.

그렇지 않은 경우 옵션은 다음과 같습니다.

컨텍스트의 메서드(예: getExternalFilesDir())를 사용하여 앱이 쓸 수 있는 외부 저장소의 디렉터리에 액세스합니다. Android 4.4에서는 이러한 디렉터리를 사용하는 데 권한이 필요하지 않습니다. 그러나 앱이 제거되면 여기에 저장된 데이터가 삭제됩니다.

    저장소 액세스 프레임워크(예: ACTION_OPEN_DOCUMENT 및 ACTION_CREATE_DOCUMENT)를 사용합니다.
  • 콘텐츠가 미디어인 경우 MediaStore를 사용하여 미디어를 표준 미디어 위치에 배치할 수 있습니다.

위 내용은 필요한 권한이 있어도 Android 10에서 디렉터리를 만들 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.