본문 바로가기

개발/안드로이드20

코틀린 isEmpty와 isBlank 차이 자바에서는 isEmpty만 있어서 isBlank는 뭐가 다른가 궁금했는데, isEmpty는 "" 와 같이 완전히 비어있는 문자열인 경우 참이고, isBlank는 "", " ", "\n", "\t"와 같이 비어있거나 화이트 스페이스로만 이뤄진 경우에 참이다. 2021. 5. 2.
BillingClient의 launchBillingFlow에서 NullPointerException 며칠 전 안드로이드의 BillingClient 버전을 2.0.3에서 3.0.3으로 올렸는데 아래와 같은 오류가 발생했다. Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference at com.android.billingclient.api.BillingClientImpl.launchBillingFlow(BillingClientImpl.java:48) at com.myapp.MainActivity$launchPurchaseFlow$1.onS.. 2021. 3. 25.
코틀린에서 const val 과 val 차이 자바에서 상수를 선언할 아래와 같이 사용한다 class PageLoader { public static final int PAGE_SIZE = 20; } 코틀린에서는 보통 companion object에서 상수를 선언해 사용하는데, val만 사용해도 변경이 안되기 때문에 아래처럼 사용하기도 한다. class PageLoader { companion object { val PAGE_SIZE = 20 } } 코틀린만 보면 별 차이가 없는데, 코틀린에서 선언된 PAGE_SIZE를 자바에서 사용하려면 함수가 되어 있는 것을 볼 수 있다. PageLoader.Companion.getPAGE_SIZE(); 맨 위의 자바 코드에서 처럼 만들려면 const를 붙여줘야 한다. class PageLoader { compa.. 2021. 2. 21.
앱 설치/업데이트 시간 가져오기 PackageInfo packageInfo = App.get().getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 0); // packageInfo.firstInstallTime // packageInfo.lastUpdateTime 2021. 2. 3.