먼저 외부 저장소를 사용하기 위해서는 저장소 권한을 설정해야 한다.
AndroidManifest.xml
에서 <manifest>
안에 외부 저장소의 권한을 주는 구문을 넣는다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
여기서 주의할 점은 android 10 버전에서는 AndroidManifest.xml
파일에서 <application>
안에 android:requestLegacyExternalStorage="true"
를 추가 해야 외부 저장소를 사용할 수 있다.
권한을 설정하고, 앱을 실행하였을 때 권한 허용 문구가 뜰 수 있도록 앱의 첫 시작 Activity에 해당 함수를 선언하였다.
public void checkVerify() {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { }
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
권한을 허용하지 않았을 경우, 권한 팝업이 뜨도록 하는 함수 이다.
! 여기서 추가적으로 onRequestPermissionsResult
를 사용하여 권한 허용을 하지 않았을 경우를 위한 처리를 할 수 있다.
다음으로, 간략하게 폴더를 생성하는 자바 코드는 아래와 같다.
File path = Environment.getExternalStoragePublicDirectory("/(path 입력)");
if (!path.mkdirs()) {
Log.e("FILE", "Directory not created");
}
else {
Toast.makeText(this, "폴더 저장", Toast.LENGTH_SHORT).show();
}
폴더를 저장할 path를 설정한 후, 해당 path에 파일을 생성하는 함수인 mkdirs()
이 false가 될 경우, 중복된 이름이 있거나 권한 설정이 제대로 되지 않은 것이므로 이때 Log에 error 메세지를 띄운도록 한다. true인 경우, Toast로 메세지를 띄우도록 한다.