전체 글 103

[Android] 앱 설치여부 확인 및 플레이스토어 이동

안녕하세요😄 외부 앱 호출을 사용할 때, 설치 여부를 확인을 하는 부분을 구현하다 제대로 동작하지 않기에 확인해보니 Android 11 이상에서는 Manifest에서 따로 설정해줘야 하는 부분이 있었습니다 변경된 부분을 설정 후, 특정 앱의 설치 여부를 확인하는 부분에 대해 알아보겠습니다 Package Visibility Manifest에서 를 선언 후 해당 태그 아래에 로 선언을 해주면 됩니다 위의 경우는 개별적으로 선언한 앱들만 허용하는 부분이고, 전체를 허용할 경우 퍼미션 중QUERY_ALL_PACKAGES를 선언해주면 됩니다. 변경된 부분이 너무 간단하지만, 안드로이드 버전이 올라갈 때마다 변경사항을 확인하지 않으면 놓치기 쉬운 부분일 것 같습니다 이어서 앱의 설치여부도 확인해보겠습니다 앱의 설치..

📱 Android 2021.12.27

[Kotlin] 동적 View 생성

안녕하세요 오랜만의 포스팅입니다 😊 실무 중 동적으로 View 생성이 많이 사용되기에, 따로 정리를 해두고자 합니다 예시는 TextView를 사용하겠지만, 다른 View를 생성하는 방식도 비슷한 형식으로 사용됩니다. 아래와 같은 UI를 만들어보겠습니다 단순 동적 View 생성만 나타내는 부분이므로 매우 간단합니다 😅 1. drawable 생성 TextView Background를 위해 배경을 먼저 생성해보겠습니다 2. 소스코드에서 View 생성 fun addView() { val params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(dpToPx(this, 80f), dpToPx(this, 40f)) val arr = arrayOf("한식", "분식..

💡 Kotlin 2021.06.13

[Android] RecyclerView (1) - Multi ViewHolder

안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않으면, 잘 잊기 쉽더라구요) 단순한 RecyclerView 사용보다 API를 연동해서 사용하는 방법을 정리해두면 실무에 더 될 것 같아서 REST API, ViewHolder, Retrofit, OkHttp를 함께 사용해보겠습니다. RecyclerView란 기존에 목록을 나타내기 위해 사용했던 ListView보다 더 유연하고 향상된 View로 쉽게 말하자면 ListView의 상위 버전이라고 생각하면 좋을 것 같습니다 1. 라이브러리 추가하기 implementation 'com.google.code.gson:gs..

📱 Android 2021.05.15

[Android] SharedPreference에 ArrayList, HashMap 저장하기

안녕하세요 오늘은 SharedPreference에 ArrayList, HashMap을 저장하는 방법에 대해 알아보고자 합니다 우선, SharedPreference에 대해 잘 모르시는 분이라면 2021.01.19 - [Android] - [Android] SharedPreferences 사용하기 를 보고 오시는 것을 추천드립니다 :) [Android] SharedPreferences 사용하기 SharedPreferences란? ✔ 데이터가 파일로 저장되고, 저장하려는 키-값 컬렉션이 비교적 작은 경우에 주로 사용됩니다. ✔ DB를 사용하지 않고, 간단한 데이터들을 저장할 때 주로 쓰이며, 앱을 껐다 ddusi-dod.tistory.com 소스는 Kotlin으로 작성했습니다 1. ArrayList 저장하기 ..

📱 Android 2021.03.24

[Android] FirebaseInstanceID Deprecated

FirebaseInstanceID Deprecated implementation 'com.google.firebase:firebase-messaging:21.0.1' Firebase-messaging을 21.0.1로 업그레이드를 시키니 Push Token을 받아오기 위해 사용했던 FirebaseInstanceID 클래스가 Deprecated 되었습니다😭 클래스 자체가 Deprecated 되었으므로 소스 전체의 변경이 필요했습니다 코드 변경하기 우선, 변경 전 FirebaseInstanceID가 import 되어있는 부분은 전부 삭제하고 진행했습니다. 기존에 쓰고 있던 코드는 public Task getInstanceId () 위의 원형을 사용한 코드였는데, FirebaseInstanceId 이 페이지를 ..

📱 Android 2021.03.08

[Android] OS 점유율 & minSdkVersion

오늘은 OS 점유율에 대해 확인해보겠습니다 OS 점유율은 프로젝트 생성 시 하단의 링크를 클릭하면 됩니다. ❔Your app will run on approximately 100% of devices. Help me choose 저 링크를 클릭하면 아래와 같은 사진이 뜹니다. 각 API별로 cumulative distribution을 확인할 수 있는데, 해당 API 를 제공하면 몇 %의 사용자가 사용할 수 있는지라고 생각하시면 될 것 같습니다 점유율 확인은 minSDKVersion을 정할 때 확인하면 됩니다. minSdkversion이란? 애플리케이션이 실행하는 데 필요한 최소 API 레벨을 지정하는 정수입니다. Android 시스템은 시스템의 API 레벨이 이 특성에 지정된 값보다 낮은 경우 사용자가 ..

📱 Android 2021.01.27

[Android] SharedPreferences 사용하기

SharedPreferences란? ✔ 데이터가 파일로 저장되고, 저장하려는 키-값 컬렉션이 비교적 작은 경우에 주로 사용됩니다. ✔ DB를 사용하지 않고, 간단한 데이터들을 저장할 때 주로 쓰이며, 앱을 껐다 켜도 사라지지 않아서 자주 사용하는 인터페이스입니다. ✔ 앱을 삭제하거나, 따로 삭제를 설정해야 값들이 사라집니다. ✔ Key, Value형태로 저장됩니다. SharedPreferences 사용법 1. KEY 정하기 위에서 언급했듯이 Key, Value의 형태로 저장되기 때문에, 우선 Key값을 정해줍니다. 2. Value 타입 정하기 SharedPreferences에는 String, Int, Boolean, Long 등 다양한 자료형이 저장될 수 있으므로 어떤 타입을 사용할지 지정해야 합니다. ..

📱 Android 2021.01.19

[Java/Android] 현재 날짜, 시간 출력 SimpleDateFormat

SimpleDateFormat 날짜 또는 시간을 원하는 포맷으로 출력하고 싶을 때 사용하는 클래스입니다. 우선 포맷을 생성하는데 쓰이는 문자에 따라서 출력이 다르게 나옵니다. Date or Time Component를 참고해서 원하는 Letter를 사용하시면 됩니다. Letter Date or Time Component Presentation Examples e Era designator Text AD y Year Year 1996, 96 Y Week year Year 2009, 09 M Month in year Month July, Jul, 07 w Week in year Number 27 W Week in month Number 2 d Day in month Number 189 D Day in yea..

☕️ Java 2021.01.18

[Android] Notification

안드로이드 개발자라면 한번씩은 해봤을 Notification에 대해 정리해보겠습니다. 간략히 말하자면 Notification은 사용자에게 앱의 이벤트에 대한 정보를 제공하고, Builder를 통해서 생성해야합니다. NotificationChannel은 각 Notification들을 관리하는 것이라 생각하면 되는데, API 26 이상부턴 반드시 추가를 해줘야 Notification을 발생시킬 수 있습니다. 예제를 통해 더 자세히 알아보겠습니다 1. NotificationChannel 생성 val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if (Build.VERSION.SDK_INT >..

📱 Android 2021.01.04

[Android] Timber 사용해보기

로그를 찍을 때마다 Log를 사용했었는데 Using 'Log' instead of 'Timber' Log를 사용하는 부분에서 위와 같은 메시지가 떴습니다 줄곧 Log만 사용하다가 Timber에 대해 궁금증이 생겨서 이에 대해 정리해보려고 합니다. 1. Timber ? 마찬가지로 로깅 클래스인데 , 기존에 사용하던 Log보다 더 간편하고 릴리즈할 때 로그가 노출될 걱정을 하지 않아도 됩니다. 다른 로깅 클래스와 마찬가지로 사용법은 어렵지 않습니다. 2. Timber 사용법 우선, 다른 라이브러리를 implementation 해줍니다. (build.gradle(:app)) implementation 'com.jakewharton.timber:timber:4.7.1' 그리고 Log.d를 사용할 때와는 달리 초..

📱 Android 2020.12.29