투케이2K

234. (AndroidStudio/android/java) 안드로이드 os 11 (R 버전) 이상 모든 파일 접근 액세스 권한 부여 - MANAGE_EXTERNAL_STORAGE 본문

Android

234. (AndroidStudio/android/java) 안드로이드 os 11 (R 버전) 이상 모든 파일 접근 액세스 권한 부여 - MANAGE_EXTERNAL_STORAGE

투케이2K 2021. 12. 13. 20:44

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

    // TODO [checkFilePermission 앱 파일 접근 허용 설정 창 이동]
    public static void checkFilePermission(Context mContext){
        // [구글 디벨로퍼 참고 사이트]
        // url : https://developer.android.com/training/data-storage/manage-all-files?hl=ko


        // [필요 퍼미션]
        // <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />


        // [안드로이드 os 11 버전 이상 체크 수행 실시]
        if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) && !isFileGranted(mContext)){
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_Permission >> checkFilePermission() :: 앱 파일 접근 권한 상태 확인]");
            Log.i("","\n"+"[상태 :: "+"앱 파일 접근 권한 부여되지 않은 상태 >> 앱 파일 접근 권한 설정 창 이동 실시"+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");

            // [안드로이드 R 버전 이상 파일 접근 권한 필요]
            Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
            Uri uri = Uri.fromParts("package", mContext.getPackageName(), null);
            intent.setData(uri);
            mContext.startActivity(intent);
        }
        else if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) && isFileGranted(mContext)) {
            Log.i("---","---");
            Log.w("//===========//","================================================");
            Log.i("","\n"+"[C_Permission >> checkFilePermission() :: 앱 파일 접근 권한 상태 확인]");
            Log.i("","\n"+"[상태 :: "+"앱 파일 접근 권한 부여된 상태"+"]");
            Log.w("//===========//","================================================");
            Log.i("---","---");
        }
        else {
            Log.i("---","---");
            Log.d("//===========//","================================================");
            Log.i("","\n"+"[C_Permission >> checkFilePermission() :: 앱 파일 접근 권한 상태 확인]");
            Log.i("","\n"+"[상태 :: "+"Android 11 버전 미만 단말기"+"]");
            Log.d("//===========//","================================================");
            Log.i("---","---");
        }
    }
    @TargetApi(Build.VERSION_CODES.R)
    private static boolean isFileGranted(Context mContext) {
        boolean granted = false; // 권한 부여 상태값 저장
        try {
            // [파일 접근 권한이 허용 된 경우]
            if (Environment.isExternalStorageManager() == true){
                granted = true;
            }
            else {
                granted = false;
            }
        }
        catch (Throwable why) {
            //why.printStackTrace();
        }
        // [결과 반환 실시]
        return granted;
    }
 

 

반응형
Comments