본문 바로가기

안드로이드

(33)
Android Asset 활용하기 안드로이드 개발을 하다보면 앱 실행에 필요한 데이터 중 파일을 추가해야 할 경우가 있다. 예로, 앱 구동에 필요한 기본 데이터가 있을 것이다. 해당 파일을 읽어야 할 때 사용하는 것이 Asset이다. 안드로이드에서는 AssetManager를 제공하여 해당 Manager를 통해 Asset에 접근하도록 가이드하고 있다. 하지만 AssetManager는 final class이기 때문에 직접적인 접근을 할 수 없다. 따라서 우리는 Context에 있는 getAssets() 메서드를 통해 해당 Manager객체를 불러와야 한다. 사용방법은 매우 간단하다. 1. assets 폴더 생성 상단 메뉴 탭에서 File>New>Folder>Assets Folder 클릭하여 생성 2. 폴더 경로 및 타겟 지정 후 Finish..
다른 앱의 알림(Notification) 내용 가져오는 방법(알림 접근) 간혹 앱에서 다른 앱의 알림(Notification)에 접근해야 하는 경우가 생긴다. 이 때 사용하는 클래스가 NotificationListenerService 이며, 해당 클래스를 구현해서 사용한다. 해당 클래스는 Service이기 때문에 AndroidManifest에 등록 후 사용해야 한다. permission으로는 android.permission.BIND_NOTIFICATION_LISTENER_SERVICE을 부여해줘야 하는데 해당 권한은 'signature'로 시스템에서 부여하는 권한으로 앱에서 임의로 권한을 획득할 수 없고, 사용자가 설정에서 부여해줘야 한다. AndroidManifest.xml enabledPackageName == packageName } } ... 참고 자료 https:/..
Android Studio - Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option 해결 방법 기존엔 변화가 없다가 안드로이드 스튜디오 업데이트 및 Kotlin plugin 업데이트를 진행하고 나서 기존 프로젝트에 적용하던 중 해당 에러가 발생하였다. 에러 내용은 아래와 같다. 'Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option' 해결방법은 아래와 같이 build.gradle(Module: app)에 kotlinOptions에 jvmTarget을 1.8로 지정해주면 빌드가 정상적으로 된다. android { ... kotlinOptions { jvmTarget = 1.8 } ... }
안드로이드 개발 - (6) Android Component: Content Providers 중앙 레파지토리의 데이터를 관리한다. Android Application의 일부로 흔히 데이터 작업을 위한 UI 제공을 한다. 그러나 기본적으로 Content Provider는 Provider 클라이언트 오브젝트를 이용하여 Provider에 엑세스하는 다른 Application에서 사용하기 위한 것이다. Provider와 Provider 클라이언트가 결합하면 데이터에 하나의 일관적인 표준 인터페이스를 제공하여 이것이 프로세스간 통신과 보안 데이터 엑세스도 처리한다. 일반적으로 두 경우 중 하나에서 Content Provider를 사용한다. 다른 Application의 존재하는 Content Provider에 엑세스하기 위해 나의 Application의 데이터를 다른 Application과 공유하기 위해 ..
안드로이드 개발 - (5) Android Component: Broadcast Receiver Android 시스템 및 기타 Android 앱에서 브로드캐스트 메시지를 보내거나 받을 수 있다. 이러한 브로드캐스트는 관심 이벤트가 발생할 때 전송된다. 시스템에서 보내는 브로드캐스트와 앱에서 보내는 커스텀 브로드캐스트가 있다. ex) 시스템 : 부팅, 디바이스 충전 시작 등 / 커스텀 : 데이터 다운로드 완료 등 Android 플랫폼별 변경점 Android 10(Q, API 29) Android 9 (Pie, API 28) NETWORK_STATE_CHANGED_ACTION 브로드캐스트에서 사용자 위치나 개인 정보 데이터를 받을 수 없다. 앱이 Android 9 이상을 실행하는 기기에 설치된 경우 Wi-Fi 브로드캐스트에 SSIDs, BSSIDs, 접속 정보, 스캔 결과가 포함되지 않는다. 해당 정보..
안드로이드 개발 - (4) Android Component: Service Android Component 2번째로는 서비스(Service)이다. 백그라운드에서 오래 실행되는 작업을 수행하며 UI를 제공하지 않는다. 다른 컴포넌트가 서비스를 시작할 수 있으며, 또 다른 앱으로 전환하더라도 백그라운드에서 계속 실행된다. 컴포넌트를 서비스에 바인드하여 서비스와 상호작용할 수 있고, 프로세스간 통신(IPC)도 수행할 수 있다. 서비스의 형태는 다음과 같이 Foreground, Background 상태를 갖는다. Foreground의 경우 사용자에게 노출되는 알림(Notification)을 반드시 제공해야 한다. Foreground : Foreground 서비스는 사용자에게 반드시 알림을 제공해야 한다. 사용자가 앱과 상호작용이 있는 한 서비스는 계속 실행된다. Background :..
안드로이드 개발 - (3) Android Component: Activity Android Component(구성요소)는 안드로이드 개발에 있어 가장 중요한 기본이라 할 수 있다. 4대 컴포넌트라고도 불리며 Activity, Service, Broadcast Receiver, Content Provider 이다. 그중 Activity에 대해 먼저 알아보고자 한다. Activity - 사용자와 앱간의 상호작용을 할 수 있는 화면(View)을 제공한다. Activity에 UI를 배치할 수 있다. - 생명주기(Lifecycle) 상태별 콜백 메서드가 존재하며, 각 메서드는 Lifecycle의 상태 변화에 알맞은 특정 작업을 수행할 기회를 제공한다. 메서드 설명 중단가능 다음 onCreate() 시스템에서 Activity를 처음 생성할 때 호출 setContentView() 를 호출하여..
안드로이드 개발 - (2) Android Studio 프로젝트 생성 Android Studio의 설정을 마쳤다면, 이제 프로젝트를 생성해볼 차례이다. Android APP을 제작하기 위해선 다양한 방법이 많지만 Android Studio의 프로젝트 생성으로도 가능하다. Android Studio를 실행하고 'Start a new Android Studio project'를 클릭한다. 물론 Android Studio는 VCS를 지원하기 때문에 (Git, SVN, Google cloud 등) VCS 연동을 통해 혹은 외부 소스를 열어볼 수도 있으나 지금은 새로 생성하는 방법만 다루도록 하겠다. 프로젝트의 기본 Activity를 지정할 수 있다. 프로그래머의 편의성을 돕기위해 다양한 Template을 제공하고 있다. 이 템플릿은 프로젝트를 생성한 후에도 Activity를 추가..