Development

- SQLite는 SQLiteOpenHelper라는 DB 초기화 및 생성 담당자를 갖고 있다. - onCreate(), onOpen(), onUpgrade() 등의 메서드가 있는데, 여기서 onUpgrade()를 통해 마이그레이션 작업 수행이 가능하다. - 마이그레이션 단계 구분을 위해서 DB 버전을 생성해주어야 한다. 마이그레이션 시, 해당 버전 값을 +1 하는 것을 잊지 말자private static final int DATABASE_VERSION = 11;public static synchronized DBHelper getHelper(Context context) { if (instance == null) instance = new DBHelper(context); return inst..
- 자사 앱 플레이스토어 이동 링크를 웹뷰에서 클릭했는데 다음과 같은 화면이 나왔다.- 웹뷰가 intent:// 스킴을 이해하지 못해서 발생하는 문제다.- 안드로이드 WebView는 http://, https://는 기본 지원하지만, intent:// 같은 커스텀 스킴은 직접 처리해줘야 한다. - 웹뷰 클라이언트를 다음과 같이 수정해 주면 된다. URI_INTENT_SCHEME를 사용해서 대응해 주던지 아니면 외부로 플레이스토어를 열어주던지의 결정이 필요하다.webView.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Bo..
- 앱 링크로 인증이 완료된 후, 다시 크롬 커스텀 탭을 실행한 화면으로부터 웹 서버에서 반환한 데이터를 가져오고 싶다면 - 먼저 Manifest에서 해당 activity 태그에 아래 코드를 추가해 준다.android:launchMode="singleTop"- Activity launch mode가 기본값(standard)이거나, 이미 앱이 백그라운드에 있어서 새로운 인텐트가 기존 액티비티로 전달되기 때문에 이전 화면이 보이는 문제가 있었다. - 그리고 크롬 커스텀 탭을 열어줬던 Activity에서는 onNewIntent()로 필요한 처리를 진행한다.override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) handleRedire..
- 앱 링크는 Android에서 특정 URL을 클릭했을 때 웹 브라우저가 아니라 앱으로 바로 연결되도록 하는 기술이다. - 앱에서 Manifest에 Intent Filter 설정뿐만 아니라 웹 서버에서도 인증을 위해 앱의 패키지명과 서명을 포함한 json 파일 등록이 요구된다. - 먼저 앱에서는 아래와 같이 구성해볼 수 있다. - autoVerify=ture 속성을 Intent filter에 넣어주게 되면 생성된 App Link URL 도메인으로 이동하여 데이터 에셋 파일을 검색한다. - 카테고리 태그 및 스키마와 host, path를 지정하는 것에 주의하자. path는 포함 개념으로 pathPrefix를 사용했다. - 웹 서버에서 파..
- 코틀린에서 코루틴은 CoroutineContext라는 실행 맥락 안에서 동작한다. - Context는 여러 요소(Job, Dispatcher 등)를 포함하고 있으며, 그중에서도 Dispatcher는 코루틴이 어떤 스레드에서 실행될지를 결정하는 중요한 역할을 한다. - 먼저, 코루틴의 Dispatcher에는 다음과 같은 종류가 있다.Dispatchers.Main설명: 안드로이드 메인(UI) 스레드에서 실행.용도: UI 업데이트, Toast, View 조작, LiveData/StateFlow 수집 등.주의: 긴 연산이나 I/O를 여기서 하면 ANR 발생 가능.CoroutineScope(Dispatchers.Main).launch { textView.text = "UI 업데이트" }2️⃣ Dispatche..
- ImageView에 바로 Shadow(elevation)을 적용할 수는 없는 것으로 보이고, CardView에 ImageView를 add 해서 구현해야 했다.val cardLp = FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER).apply { val m = (8 * resources.displayMetrics.density).toInt() setMargins(m, m, m, m)}val card = CardView(this@AddOnActivity).apply { layoutParams = cardLp ..
- WebView란? 안드로이드 앱 안에 내장된 브라우저라고 생각하면 된다. 즉, 앱 안에서 웹페이지(HTML, CSS, JavaScript)를 렌더링 하고 실행할 수 있는 View - 웹사이트를 보여줄 수도 있고, 앱 내부 기능과 연결된 하이브리드 앱 개발에도 자주 사용된다. - 안드로이드에서 애플 로그인 등. 웹뷰로 url에 접근하여 결과를 받아오는 방식이 필요할 때가 있다. - 이 글에서는 url을 웹뷰로 열고, 어떻게 그 안에서 결과 콜백을 받아오는지 확인해본다. 필자는 다이얼로그로 웹뷰를 보여주고자 한다. - 웹뷰의 데이터 전달 방식은 대략 다음과 같다. - 먼저 WebView 자체를 다이얼로그에 ContentView Set한다.) : Dialog(context) { private late..
- 서버로부터 buttonText라는 문자열을 받아 아래와 같은 안드로이드 기본 Button 컴포넌트에 입력해 주었다. - 그런데 BUTTONTEXT라고 모두 대문자 처리되어 보이고 있다. - 원인은 TextView(Button 상속) 속성 중 textAllCaps 때문이다. - 안드로이드 초창기에는 버튼의 영문을 모두 대문자로 표시하는 것이 디자인 가이드 원칙이었다고 한다. 아마 버튼에 대한 강조성 때문인 듯 - 어쨌든 textAllCaps가 항상 true로 되어있기 때문에 이 값을 false로 바꿔주면 된다.confirmBtn.isAllCaps = falseconfirmBtn.text = data.buttonText
- 먼저 MSAL에 대한 프로젝트 구성이 필요하다. 생성된 client ID, redirect_uri를 앱 개발자가 알고 있어야 한다.https://learn.microsoft.com/ko-kr/azure/active-directory-b2c/enable-authentication-android-app?tabs=kotlin Android 앱에서 인증 사용 - Azure AD B2CAzure Active Directory B2C 구성 요소를 사용하여 Android 애플리케이션에서 인증을 사용하도록 설정합니다. Azure AD B2C를 사용하여 Android 애플리케이션에서 사용자를 로그인하고 등록하는 방법을 알아봅learn.microsoft.com - 앱의 raw 폴더에 auth_config json 파일..
- 안드로이드에서 Signature Hash는 앱의 APK에 포함된 서명(Developer Signing Certificate)을 해시 처리한 값이다.- 주로 외부 서비스(API, SDK)에서 이 앱이 실제로 서명된 진짜 앱인지 검증할 때 사용된다. - 앱은 배포 전에 반드시 개발자 KeyStore로 서명되고, 외부 서비스를 패키지명 + 서명 인증서 Hash 값으로 앱을 식별하는 원리이다. - 서명 Hash에는 다음과 같은 종류가 있다. SHA-1: 예전 API, 구글 로그인, Firebase 등에서 사용SHA-256: 최근 API/보안성 강화된 서비스에서 권장- 안드로이드 스튜디오 터미널에서 아래 명령어를 입력하면 빠르게 확인이 가능하다../gradlew signingReport - 하지만 Base6..
SeungYong.Lee
'Development' 카테고리의 글 목록 (3 Page)