직전 안드로이드 포스팅에서 브로드 캐스트 메시지를 다루며 SMS 데이터를 가져오는 위험 권한을 잠깐 다뤘었다. 이번 포스팅은 위험 권한이라는 개념을 좀 더 파고들어보고, 위험 권한을 어떻게 사용자가 허용/거부하게 하는 지 그 방법을 2가지 알아볼 것이다. 우선 안드로이드에서 권한은 일반 권한과 위험 권한으로 나눌 수 있는데, 일반 권한은 앱을 설치할 때, 사용자에게 해당 권한이 부여된다는 사실을 알려주고 설치할 것인지를 물어본다. 그러나 위험 권한은 앱이 실행 시에 사용자에게 해당 권한을 사용할 것인지를 물어본다. 위험 권한으로 분류된 권한들은 대부분 개인정보가 담겨있는 정보에 접근하거나 개인정보를 만들어낼 수 있은 단말의 주요 장치에 접근할 때 부여되며, 다음과 같다. 허가 그룹 권한 CALENDAR ..
안드로이드에서 브로드캐스팅이란 메시지를 여러 객체에 전달하는 것을 말하며, 글로벌 이벤트라고 부른다. 예시로, '전화가 왔습니다.' 혹은 '문자 메시지가 도착했습니다.' 를 들 수 있다. 우리가 제작한 어플이 다른 어플에서 온 브로드 캐스트 메시지를 받고 싶다면, 브로드캐스트 수신자를 만들어 앱에 등록해야한다. 브로드캐스트 수신자 또한 서비스와 마찬가지로 앱 구성요소이기 때문에 매니페스트 파일에 등록해야 시스템이 알 수 있고 화면도 없게 된다. 그러나 브로드캐스트 수신자는 매니페스트 등록 방식이 아닌 소스 코드에서 registerReceiver() 메서드를 이용하여 등록할 수도 있다. 바로 예제를 한번 구성해보자. 이후 AndroidManifest.xml 파일에 receiver 태그가 자동으로 생성되는데..
Service는 화면 없이 백그라운드에서 동작하며, 어플이 실행하고 있지 않은 상황에서도 주기적으로 데이터를 읽거나 쓰기 위해서 사용한다. 서비스는 액티비티와 함께 안드로이드 4대 구성요소 중 하나이기 때문에 새로 만든 서비스도 마찬가지로 매니페스트 파일에 등록해야 사용할 수 있다. 서비스는 실행된 상태를 계속 유지하기 위하여 서비스가 비정상적으로 종료되더라도 시스템이 자동으로 재실행된다. startService 메서드를 사용하여 액티비티에서 서비스를 실행시킬 수 있으며, 데이터를 주고 받기 위해 Intent 객체를 서비스에 전달한다. 또한 startService는 서비스가 이미 실행이 되고 있더라도 여러 번 호출이 가능하며 서비스는 그대로 메모리에 만들어진 상태로 유지된다. 때문에 startServic..
직전 포스팅인 Navigation Drawer 을 다루면서 생성한 Fragment 객체는 이전에 봤던 Fragment객체의 형태와 많이 달라있었다. 이전처름 Fragment객체를 생성한 뒤, Fragment클래스를 상속받아서 inflate해주는 코드 한 줄만 구성한 것이 아닌, 아래와 같이 ViewModel 객체를 상속 받은 FragmentModelView클래스를 Fragment 클래스와 함께 생성하였다. ◎SlideshowViewModel.java package com.example.callenge.ui.slideshow; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecy..
NavgationDrawer은 화면의 좌측 상단의 아이콘을 클릭했을 때, 바로가기 메뉴 등이 나타나도록 할 수 있는 화면이다. 프로젝트를 생성할 때, 해당 액티비티를 선택하여 생성하는 것 또한 가능하다. 프로젝트를 생성하고나서 activity_main.xml을 열어보면 아래와 같이 app_bar_main.xml 레이아웃 파일이 임포트되어 있고, 그 아래에 NavigationView 태그가 작성이 되어있다. ◎activity_main.xml NavigationView객체를 보면, headerLayout과 menu 속성이 존재하는데 이는 각각 바로가기 메뉴 상단과 그 아래 표시될 메뉴를 나타낸다. ◎app_bar_main.xml app_bar_main.xml 파일이 실질적인 메인화면 역할을 하는 레이아웃 파..
View pager2는 손가락으로 좌우 스크롤하여 넘겨볼 수 있는 기능을 제공한다. (책에서는 View pager를 사용하지만, API 27 기준으로 deprecated됐기 때문에 View pager2를 사용하도록 하겠다) 내부에 프래그먼트를 삽입하면, 뷰페이져는 어뎁터라는 객체와 상호작용하여 이 어뎁터가 삽입한 프래그먼트 중 하나를 사용자에게 보여주는 방식이다. 바로 한번 코드를 확인해보자. ◎activity_main.xml 우선 메인 액티비티에 ViewPager2를 위와 같이 추가한다. 이MainActivity.java 클래스에서는 FragmentStateAdapter 클래스를 상속받는 내부 클래스를 하나 생성하고, 그 생성자 메서드는 FragmentActivity를 받도록 작성한다. 이후에 Frag..
하단 탭은 액션바로 구성했던 상단 탭과는 달리 네비게이션 바를 사용하여 구성하며, BottomNavigationView 위젯으로 만들 수 있다. 바로 예제를 확인해보자. 하단 탭은 res/menu 디렉토리 안에 menu_botton.xml 레이아웃 파일을 새로 생성하여 만든다. ◎ res/menu/menu_botton.xml 다음으로 activity_main.xml 에서 BottomNavigationView 위젯을 FrameLayout 하단에 배치한다. ◎activity_main.xml BottomNavigationView의 menu 속성에 menu/menu_layout.xml 파일을 넣어준다. ◎MainActivity.java package com.example.samplebottomtab; impor..
Android의 탭은 네비게이션 위젯이라고 불리기도 하며, 상답 탭과 하단 탭으로 구분한다. 상단 탭의 경우에는 직전 포스팅에서 다뤘던 액션바에 탭 기능을 넣어 보여주는 방법으로 제공되며, 하단 탭은 별도의 위젯으로 제공된다. 바로 한번 간단한 탭을 만드는 예제를 확인해보자. 우선, 상단바 레이아웃을 구성하기 위해 activity_main.xml의 파레트에서 appBarLayout 을 끌어와야한다. AppBarLayout을 가져오면, 대략적인 xml 소스의 태그 구성은 다음과 같이 구성이 된다. : AppBarLayout을 감싸는 레이아웃 : 상단 액션바 : 탭 주변에 놓이는 툴바 : 각 탭을 나열할 탭 부분 ◎activity_main.xml 각 탭을 클릭하면 아래 쪽에 화면이 변경되도록 구성할 것이기 ..
직전 포스팅에서 다뤘던 예제에서 조금 더 추가하여, 액션바 타이틀 이미지와 Edit text View를 삽입하려고 한다. 바로 코드와 함께 살펴보자. ◎MainActivity.java package com.example.sampleactionbar1; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.annota..
안드로이드는 메뉴 버튼을 배치하고 이를 터치했을 때 메뉴가 보이도록 할 수 있다. 이런 방식의 메뉴를 옵션 메뉴라고 하며, 화면를 길게 눌렀을 때 팝업 형태로 나타나는 메뉴를 컨텍스트 메뉴라고 한다. 옵션 메뉴와 컨텍스트 메뉴는 각각 아래의 메서드들을 사용하여 액티비티에 추가할 수 있다. boolean onCreateOptionsMenu(Menu menu) void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo info) 또한 전달되는 Menu와 ContextMenu객체가 가지고 있는 add 메서드로 메뉴 아이템을 액티비티 코드에서 추가할 수도 있다. 메뉴를 위한 레이아웃 파일은 반드시 app/res/menu 디렉토리를..
- react-native
- 인천 구월동 이탈리안 맛집
- javascript
- react
- Promise
- 파니노구스토
- await
- 맛집
- 정보보안기사 #실기 #정리
- 인천 구월동 맛집
- redux
- redux-thunk
- AsyncStorage
- 이탈리안 레스토랑
- Async
- Total
- Today
- Yesterday