개발/Android(48)
-
Android Jetpack security
Security with zetpackEncryptedfileFlieInputStream / FileOutputStream의 사용자 구현을 지원. AEAD(Streaming Authenticated Encrption with Associated Data)를 지원해 안전한 스트리밍 읽기 / 쓰기 보장 EncryptedSharedPreferencesSharedPreferences 클래스의 wrapper. Sp에 저장된 키와 값의 자동 암호화 제공. AES-256 사용 KeyStore데이터 암호화 및 해독에 사용되는 기본 master키 사용. With Samples전통적으로, 암호화 되지 않은 sp를 사용하면 유출 될 수 있음.아래는 샘플https://github.com/Burak-Tasci/TokenMana..
2023.07.26 -
Architecture guide - suggested by Google
최신 앱 아키텍쳐 권장사항이 최신 앱 아키텍처에서는 다음 기법을 사용하도록 권장합니다.반응형 및 계층형 아키텍처앱의 모든 레이어에서 단방향 데이터 흐름(UDF)상태 홀더가 있는 UI 레이어로 UI의 복잡성 관리코루틴 및 흐름종속 항목 삽입 권장사항 UI Layer State는 아래와 같은 형식data class NewsUiState( val isSignedIn: Boolean = false, val isPremium: Boolean = false, val newsItems: List = listOf(), val userMessages: List = listOf() ) data class NewsItemUiState( val title: String, val body: String, val bookmark..
2023.07.26 -
딥링크 BASIC
커스텀 스킴 …And More Android 웹뷰에서 딥링크 열기manifest에 패키지 등록 필요한 액션을 발생시킬 페이지를 WebViewClient로 열기 → 요청, 상태, 에러를 콜백으로 편리하게 처리 가능웹뷰에서 URL을 열 때는 shouldOverrideUrlLoading()를 사용메서드에서 true를 반환하면 URL은 개발자가 정의한 대로 열리고, false를 반환하면 현재 웹뷰에서 URL을 염먼저 딥링크를 파싱해서 URI 객체로 만들고, 그리고 스킴을 확인함Intent 스킴이라면 startSchemeIntent()함수를 호출Intent 스킴 링크를 열어보고 앱이 설치 안 되어 있다면, Intent 스킴에 포함된 앱 패키지 정보로 스토어를 염Intent 스킴이 아니라면 커스텀 링크 또는 App..
2023.07.26 -
Pending Intent Basic
What is Pending Intent ?작업 실행을 지연할 수 있는 wrapperintent 캡슐화 가능 activity 시작 가능intent broadcast 가능service 시작 가능사용자 대신 다른 작업 수행 가능→ 의도를 다른 구성요소에 위임, 나중에 할 작업 예약 가능! Make Pending Intentval intent = Intent(context, MyActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, requestCode, intent, flags) Pending Intent - FLAGFLAG_UPDATE_CURRENT : 현재 intent의 추가 데이터로 업데이트됨FLAG_CANCEL_CURR..
2023.07.25 -
Android Context
Context란?android 시스템에 대한 핸들, 참조리소스, 서비스, 어플리케이션별 정보에 대한 액세스 제공 Context가 여러개인 이유개발자가 필요에 따라 적절한 수준의 액세스 및 범위를 갖도록 하기 위함수명주기와 리소스를 효율적으로 관리하기 위함 Context의 종류→ no에 할당된 숫자의 의미 activity를 시작할 수 있으나 새로운 task를 생성해야함. 일반적으로 권장되지않으며, 좋은 방법 아님legal하나 실행중이 시스템의 기본 테마로 실행receiver가 null인 경우 허용됨. Context example리소스 접근val appName = context.getString(R.string.app_name) val textColor = context.getColor(R.color.tex..
2023.07.25 -
Compound View
CompoundView란?→ 비슷한 뷰를 반복해서 사용해야할 때 유용 Compound View 만들기 뷰만들기 기존 viewgroup 확장하는 사용자 지정 view class만들기public class CompoundListItem extends ConstraintLayout { public CompoundListItem(Context context) { this(context, null); } public CompoundListItem(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } } 커스텀 속성 정의 사용자 정의 속성 적용..... private TextView txtTitle, txtValue; private Im..
2023.07.25