안드로이드 192

ContentProvider & ContentResolver

안드로이드 4대 컴포넌트 중 ContentProvider에 대해 알아보려고 한다. ContentProvider란? 안드로이드 응용 프로그램을 구성하는 컴포넌트 중 하나로서 데이터를 제공하는 역할을 하며 응용 프로그램끼리 데이터를 공유하는 유일한 방법이다. A라는 앱과 B라는 앱 사이에 데이터를 공유한다고 생각하면 된다. ContentProvider는 AndroidManifest에 등록 한다. 여기서 포인트는 exported옵션이다. ContentProvider가 개발중인 앱 내에서만 호출한다면 해당 옵션은 별도 처리 하지 않아도 되지만, 외부 앱에서 개발중인 앱을 호출하여 데이터를 제공해야 하는 경우, exported 옵션은 무조건 true로 주어야 한다. exported 옵션을 true로 주어야 하는 ..

안드로이드 2021.08.31

Android SAF ACTION 참고

참고: ACTION_OPEN_DOCUMENT는 ACTION_GET_CONTENT를 대체할 목적으로 만들어진 것이 아닙니다. 어느 것을 사용해야 할지는 각자의 앱에 필요한 것이 무엇인지에 좌우됩니다. 앱이 단순히 데이터를 읽거나 가져오도록 하려면 ACTION_GET_CONTENT를 사용합니다. 이 방식을 사용하면 앱은 데이터 사본(예: 이미지 파일)을 가져오게 됩니다. 앱이 문서 제공자가 소유한 문서에 장기적, 지속적 액세스 권한을 가지기를 바라는 경우에는 ACTION_OPEN_DOCUMENT를 사용합니다. 일례로 사용자에게 문서 제공자에 저장된 이미지를 편집할 수 있게 해주는 사진 편집 앱이 있습니다. 참고 : https://developer.android.com/guide/topics/providers..

안드로이드 2021.08.18

targetSdkVersion 30, intent.resolveActivity가 null일 경우

타겟 버전 30으로 올리면서 resolveActivity(인텐트를 수신할 앱이 있는지 먼저 확인) 호출을하면 null로 리턴하여 화면 이동이 되지 않았다. Intent(MediaStore.ACTION_IMAGE_CAPTURE)이었는데 찾아보니 Android 11에서 패키지 공개상태가 변하면서 발생하는 이슈인듯 하다. https://developer.android.com/about/versions/11/privacy/package-visibility?hl=ko Android 11의 패키지 공개 상태 | Android 개발자 | Android Developers Android 11에서는 앱이 사용자가 기기에 설치한 다른 앱을 쿼리하고 상호작용하는 방법을 변경합니다. 요소를 사용하여 앱은 액세스할 수 있는 다..

안드로이드 2021.07.29

Android Q - 저장소(Storage) 여유공간 가져오기

안드로이드 Q 부터는 ScopeStorage이 적용되기 떄문에 Q이전과는 다르게 권한을 얻어야 한다고 한다. Q이전 : READ_EXTERNAL_STORAGE권한만 얻으면 Primary저장소에 대한 모든 접근권한을 얻을수 있다. Q이후 : 접근하려는 폴더마다SAF(Storage Access Framework)를 통해서 사용자에게 권한을 받아야 한다. 참조 : https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/

안드로이드 2021.07.23

유용한 plugin

유용한 plugin Fast-Scrolling : ctrl 누르고 스크롤시 빠르게 스크롤 됨. JSON To Kotlin Class : json을 긁어다가 넣으면(API 같은 것) kotlin data 클래스로 만들어줌. Rainbow Bracket : 괄호 등 색깔을 주어 코드를 보기 편하게 해줌. Nyan Progress Bar : 프로그래스바 스타일 변경 intellij-touch : 맥북의 터치바 커스텀 해줌. Background Image Plus : 안드로이드 스튜디오에 이미지 배경 넣을 수 있음

구글 번역 시트 (Android, IOS) 뽑아내기

Android, IOS 문구 관리를 찾다가. 구글 번역 시트를 통해서 파일을 뽑아내는것을 찾았다. 1. 구글 시트 작성 2. 도구 -> 스크립트 편집기 -> 소스 붙여 넣기 var appName = "AppName"; function onOpen() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var entries = [ { name : "리소스 생성", functionName : "exportResources" } ]; sheet.addMenu(appName, entries); }; // Export resources function function exportResources() { // Folders var appFolder = createOrGet..

Android registerForActivityResult

startActivityForResult(), onActivityResult() 가 deprecated 되었습니다. ActivityResult를 받기위한 Callback등록 1. A액티비티에서 할일은 registerForActivityResult함수를 사용해서 Callbak을 등록해주는 것 입니다. 인자로 들어가는 것은 ActivityResultContracts클래스의 Static함수들이다. Result를 받기 위해서 Activity를 실행하는 StartActivityForResult()함수를 넣어 줍니다. 람다식에는 result로 받아온 값을 어떻게 사용하는지 정의해 주면 됩니다. result객체를 이용하면, resultCode와 data에 접근할 수 있다. 2. 실행하는 액티비티 private lat..

안드로이드 2021.06.23