[Android] 안드로이드 저장소(내부/외부)

김민주·2022년 10월 22일
0

Android

목록 보기
8/21

Android 저장소


내부 저장소

  • OS가 설치된 영역으로 유저가 접근할 수 없는 시스템 영역
  • 앱이 사용하는 정보와 데이터베이스가 저장됨

외부 저장소

  • 컴퓨터에 기기를 연결하면 저장소로 인식
  • 유저가 사용하는 영역
  • 사진과 동영상은 외부저장소에 저장됨



  • 콘텐츠 프로바이더로 사진 정보 가져오기
    1. 외부 저장소 읽기 권한 부여
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    2. 외부 저장소 읽기 권한 = 위험 권한이므로 사용자에게 권한 허용 요청
      if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)}
    3. contentResolver 객체를 이용하여 데이터를 Cursor 객체로 가져오기
    • contentResolver.query 함수는 5개인자를 받음
      fun query(
        uri: Uri, //어떤 데이터 가져오는지 Uri 형태로
        projection: Array<String!>?, // 어떤 항목의 데이터 가져올것인지 String 배열로 (데이터의 구조를 잘 모르면 null지정 = 모든 항목 거쳐옴)
        selection: String?, //데이터를 가져올 조건 지정(null = 전체 데이터)
        selectionArgs: Array<String!>?, // 조건 지정 (null = 사용하지 않음)
        sortOrder: String? // 정렬 방법
      ): Cursor?



콘텐츠 프로바이저로 얻은 cursor 객체는 사용을 마치면 반드시 close()

❗닫지 않으면 memory leak 발생 !!

Closeable 객체라면 use() 확장함수 써주는 것도 방법임.




참고 : 오준석의 안드로이드 생존코딩

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글