목록Android (9)
Hello, Android!

안드로이드 6.0 마시멜로 부터 위험 권한을 사용하기 위해서는 앱 실행중 해당 권한을 사용하는 타이밍에 사용자에게 이유를 설명하고 허가를 받아야 한다 이에 대응하기 위해 구글에서 각종 기능들을 제공하고는 있지만 조금 더 편하게 사용하기 위해 여러 라이브러리들도 존재한다 그 중에 하나가 박상권님께서 만드신 테드 퍼미션 이다 1. 앱 레벨의 gradle에 의존성 추가 2. 권한을 요청하는곳에 permissionlistner를 작성하고 TedPermission클래스에 필요한 항목을 설정한다 리스너 내에 두개의 함수가 있는데 - onPermissionGranted() 사용자가 권한을 허용했을때 호출되는 함수이다 - onPermissionDenied() 사용자가 권한을 거절했을때 호출되는 함수이다 TedPermi..

과거 안드로이드 앱에서 연락처, 위치정보등 각종 권한을 필요로 하는 경우 앱 설치시 사용자에게 필요 권한 목록을 보여주고 설치하는게 끝이었다 하지만 안드로이드 6.0 마시멜로 (SDK 23)이상의 경우 권한을 취득하는 방법이 변경되었다 앱 실행중 특정 권한이 필요하면 사용자에게 해당 권한이 필요한 이유를 설명하고 권한 접근 허락을 받아야한다 최초 실행시 유저가 해당 권한 접근을 허용했다고 하더라도 언제든 권한을 취소할수 있기 때문에 매번 권한이 있는지 체크를 해야한다 그나마 다행인? 것은 모든 권한에 대하여 체크를 하는것이 아닌, 특정 위험 권한에 대해서 체크를 해야한다 (https://developer.android.com/guide/topics/security/permissions.html?hl=ko..

안드로이드에서 HTTP통신을 할때 주로 사용하는 방법으로는 AsyncTask를 이용하는 방법과 Retrofit2 라는 라이브러리를 이용하는 방법이다 안드로이드는 UI를 제어하는 메인 쓰레드가 존재한다. UI변경은 메인 쓰레드에서만 가능하며 우리는 메인 쓰레드에 함부로 접근이 불가능하다 그렇기때문에 background 작업을 할때 AsyncTask를 이용하며 네트워크 통신에서도 AsyncTask 쓰레드를 만들어 네트워크 통신을 해야 한다 하지만 네트워크 통신을 더욱 편리하게 해주는 라이브러리인 Retrofit2 라이브러리가 있다 이번에는 Retrofit2를 이용하여 github에서 제공하는 API를 호출해 보겠다 https://developer.github.com/v3/repos/#list-reposito..

안드로이드 앱에서 데이터를 저장할때는 내부 DB인 SQLite를 사용하거나 외부 DB를 사용한다 DB를 사용하기에는 간단한 문자열 등의 데이터를 저장할때는 shared preferences를 사용한다 이는 파일에 데이터를 저장하게 되며, 파일은 앱 폴더 내에 저장하기때문에 앱 삭제시 데이터도 삭제가 된다 예제는 두개의 액티비티가 존재하여 메인액티비티 에서는 id와 pw를 입력받고 버튼 클릭시 shared preferences에 데이터를 저장한뒤 메인2액티비티로 액티비티를 전환한다 메인2액티비티에서는 shared preferences에 저장한 id와 pw를 읽어 텍스트뷰에 출력을 한다 getSharedPreferences()함수를 이용하여 SharedPreferences를 설정한다 getSharedPref..
지금까지는 자바를 이용하였지만 새로운 안드로이드의 공식 언어 코틀린에서는 어떻게 사용할까?코틀린을 이용하여 TextView의 텍스트를 받아오고 설정해주고EditText를 통해 입력받는 내용을 받아오고버튼 이벤트를 통해 액티비티를 전환해보자 1234567891011121314151617181920212223242526272829303132333435363738394041424344 Colored by Color Scriptercs 메인 액티비티의 XML에는 위에서부터 Textview, EditText Button 세개를 배치하였다.우선 EditText로 사용자에게 값을 입력받고 첫번째 bt00을 누르면 토스트메시지를 보여주고두번째 버튼 bt01을 누르면 EditText에 입력받은 값을 TextView에 출..
안드로이드 화면에 텍스트, 이미지, 버튼 링크 등등 다양한 뷰 를 이용하여 화면을 만든다.텍스트를 보여주고, 텍스트를 입력받고, 이미지를 보여주고, 버튼을 만들어 클을 받는등어플리케이션에서 눈에 보여지는 모든것은 뷰를 통해 이루어진다. Object| | - - -> view - - -> TextView - - -> AutoCompleteTextView | | | | - - - - - -> Button - - - -> CompoundButton - - - -> CheckBox | | - - - - - -> Chronometer |- - -> RadioButton | | - - - - - -> DigitalClock |- - -> ToggleButton | | - - - - - -> ImageView - -..
인텐트는 안드로이드에서 컴포넌트와 컴포넌트 사이를 연결하는 다리의 역할을 합니다.특히 화면을 구성하는 컴포넌트인, 액티비티 사이에를 연결할때 자주 사용합니다. 인텐트를 사용할때 명시적 인텐트와 암시적 인텐트 두가지 방법으로 사용을 합니다.이름처럼 명시적 인텐트는 액티비티를 직접적으로 명시하여 사용합니다. 이를 이용하여 MainActivity에서 버튼을 누르면 Main2Activity로 이동하도록 할수있다. 첫번째 MainActivity에서 버튼을 만들고 리스너를 달아서, 버튼을 클릭하면 인텐트를 생성하고 startActivity메소드를 실행한다 이때 첫번째 사진의 20번 줄에서 출발지점 MainActivity.this, Main2Activity.class 라고 직접적으로 명시를 하였다. 인텐트를 이용하여..
액티비티는 안드로이드 4대컴포넌트중 하나이며, 화면을 구성한다. 별도의 설정 없이 프로젝트를 생성하면 MainActivity가 존재한다.액티비티는 UI를 구성하는 컴포넌트인 만큼, 하나의 res/layout내의 xml과 연결되어 화면 내의 요소들의 이벤트를 처리하게 된다. onCreate 메소드 내에서 두번째 줄에 setContentView(R.layout.activity_main); 을 통해서 MainActivity클래스는 activity_main.xml화면과 연결된다. MainActivity이외에 다른 액티비티를 만들때 manifest내에 이러이러한 액티비티를 만들었으니 사용하겠다라고 등록을 해주어야 한다. MainActivity2를 새롭게 생성하고 manifest.xml파일을 확인해 보면 태그 안에..