Android Marshmallow 및 그 이후 버전의 디렉터리 생성 문제
Android Marshmallow는 애플리케이션이 파일 시스템과 상호 작용하는 방식에 상당한 변화를 가져왔습니다. 일부 기본 응용 프로그램에 대한 디렉터리 생성. Marshmallow에서 디렉토리를 생성하려고 할 때 일부 사용자는 일관되지 않은 동작을 경험하며 작업이 때때로 작동하고 다른 작업은 실패합니다.
문제 이해
이 문제의 근본 원인 문제는 Android의 새로운 SAF(Storage Access Framework)에 있습니다. Marshmallow 이전에는 애플리케이션에 내부 및 외부 저장소에 대한 무제한 액세스 권한이 있어 디렉토리를 자유롭게 생성할 수 있었습니다.
그러나 SAF에서는 기본적으로 외부 저장소에 대한 쓰기 액세스를 제한하는 권한을 도입했습니다. 따라서 애플리케이션은 외부 저장소에 디렉터리를 생성하기 전에 명시적으로 쓰기 권한을 요청해야 합니다.
해결책: 쓰기 권한 요청
디렉터리 생성 문제를 해결하려면, 애플리케이션은 디렉터리 생성을 시도하기 전에 사용자에게 WRITE_EXTERNAL_STORAGE 권한을 요청해야 합니다. 이 권한은 애플리케이션이 외부 저장소를 수정하는 데 필요한 권한을 갖도록 보장합니다.
다음은 저장소 쓰기 권한을 요청하고 확인하는 방법을 보여주는 예제 코드입니다.
<code class="java">import android.Manifest; import android.content.pm.PackageManager; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; public class MyDevIDS extends AppCompatActivity { private static final int REQUEST_RUNTIME_PERMISSION = 123; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (CheckPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { // you have permission go ahead createApplicationFolder(); } else { // you do not have permission go request runtime permissions RequestPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION); } } @Override public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { switch (permsRequestCode) { case REQUEST_RUNTIME_PERMISSION: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // you have permission go ahead createApplicationFolder(); } else { // you do not have permission show toast. } return; } } } public void RequestPermission(Activity thisActivity, String Permission, int Code) { if (ContextCompat.checkSelfPermission(thisActivity, Permission) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Permission)) { } else { ActivityCompat.requestPermissions(thisActivity, new String[]{Permission}, Code); } } } public boolean CheckPermission(Context context, String Permission) { if (ContextCompat.checkSelfPermission(context, Permission) == PackageManager.PERMISSION_GRANTED) { return true; } else { return false; } } }</code>
한 번 권한이 부여되면 애플리케이션은 문제 없이 mkdirs() 메서드를 사용하여 디렉터리 생성을 진행할 수 있습니다. 이 솔루션을 구현함으로써 개발자는 자신의 애플리케이션이 Android Marshmallow 이상 버전에서 디렉터리를 안정적으로 생성할 수 있도록 보장할 수 있습니다.
위 내용은 Android Marshmallow 이상에서 디렉터리 생성 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
