Nam's

Android Studio (Java) 파일 접근 에러 open failed: EACCES (Permission denied) 본문

개발/APP

Android Studio (Java) 파일 접근 에러 open failed: EACCES (Permission denied)

namespace 2021. 2. 18. 13:44

구글링을 하면서 해결방법을 3가지 정도 알게 됐는데, 내 경우에는 3가지 방법을 모두 적용해야 에러가 해결됐다.

1. AndroidManifest.xml에 uses-permission 추가

1
2
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
cs

위치는 아래와 같이 <application> 밖에 적어줘야된다.

2. AndroidManifest.xml에 requestLegacyExternalStorage 추가

1
android:requestLegacyExternalStorage="true"
cs

이번에는 <application> 안에 넣어줘야된다.



출처: medium.com/@sriramaripirala/android-10-open-failed-eacces-permission-denied-da8b630a89dfstackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android/57804657#57804657

3. 사용자로부터 권한 승인 받기

파일에 접근하는 함수 이전에 verifyStoragePermissions(this)를 call 해주면 사용자에게 승인 요청 팝업이 뜬다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    // Storage Permissions
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
 
    /**
     * Checks if the app has permission to write to device storage
     *
     * If the app does not has permission then the user will be prompted to grant permissions
     *
     * @param activity
     */
    public static void verifyStoragePermissions(Activity activity) {
        // Check if we have write permission
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
 
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    activity,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    }
cs

출처: https://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android?page=1&tab=votes#tab-top

Comments