[android] 안드로이드 권한과 저장소 접근

안드로이드 앱을 개발할 때, 사용자의 개인 정보나 기기의 저장소에 접근하기 위해서는 권한(permission)을 획들해야 합니다. 안드로이드는 다양한 권한을 제공하고, 각 권한을 요청하고 관리하는 방법을 제공합니다. 또한 안드로이드 6.0 (API 레벨 23) 이상에서는 런타임 권한 요청을 지원하여 사용자가 앱을 설치할 때 모든 권한을 일괄적으로 승인하지 않아도 됩니다.

권한 관리

메니페스트 파일에서 권한 추가

AndroidManifest.xml 파일에 <uses-permission> 태그를 사용하여 앱이 필요로 하는 권한을 명시합니다. 예를 들어, 외부 저장소에 대한 읽기 및 쓰기 권한을 요청하려면 다음과 같이 추가합니다.

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

런타임 권한 요청

앱이 실행 중에 사용자에게 권한을 요청해야 하는 경우, ActivityCompat.requestPermissions를 사용하여 권한을 요청합니다. 권한이 허용되거나 거부될 때 시스템은 앱에 대한 결과를 onRequestPermissionsResult 콜백을 통해 전달합니다.

String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE);

저장소 접근

내부 저장소

안드로이드의 내부 저장소는 앱마다 별도로 할당되는 디렉터리입니다. 내부 저장소에 파일을 쓰거나 읽으려면 Context.getFilesDir() 메서드를 이용하여 앱의 디렉터리 경로를 가져와 사용합니다.

File file = new File(context.getFilesDir(), "filename.txt");

외부 저장소

외부 저장소는 사용자가 파일을 공유하고 여러 앱에서 접근할 수 있는 공유 저장소입니다. 권한을 허용받아야만 외부 저장소에 접근할 수 있으며, 마찬가지로 파일을 쓰거나 읽기 위해서는 파일 접근 권한 뿐만 아니라 런타임 권한 요청이 필요합니다.

결론

안드로이드에서는 권한을 통해 사용자의 개인 정보와 저장소를 보호하고, 런타임 권한 요청을 통해 사용자가 보다 안전하게 앱을 이용할 수 있도록 지원합니다. 앱을 개발할 때 권한 요청 및 저장소 접근에 대한 가이드라인을 잘 숙지하여 안정적이고 보안성 높은 앱을 개발할 수 있습니다.

관련 문서: 안드로이드 개발자 사이트