본문 바로가기

나의 플랫폼/안드로이드

[Firebase] You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE FireBase를 이용하여 Login을 진행하다가 위와 같은 에러가 발생하는 것을 볼 수 있습니다. 이건 해석 그대로 OAuth2 설정이 잘못 되어 있다는 의미로,FireBase Console 에다가 SHA1을 지정 해주셔야 하기 때문 입니다. 그럼 어떻게 지정 하는지 알아보겠습니다. 1. Android Studio의 Terminal 화면으로 이동 2. 아래 명령어를 입력 합니다. keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.an.. 더보기
[Android] Fragment 에서 getActivity를 사용시 NullpointerException 발생 Fragment에서 getActivity 함수를 이용할 수가 있습니다.Fragment는 Activity 내부에서 UI를 다양하게 표현하기 위한 용도 이므로,당연히 중요한 함수 입니다. 하지만, 가끔 getActivity 함수에서 NullPointerException이 발생 합니다. 저같은 경우는 onCreateView 함수에서 getActivity 함수를 이용 했었습니다. 테스트 시, 거의 발생 하지 않는 에러 입니다. 하지만, 앱을 등록 하고 사용자가 많아지면서 자주 눈에 띄게 됩니다. 그럼.. 어떻게 해야 할까요?? 아래는 StackOverFlow에서 나오는 답변 입니다. http://stackoverflow.com/a/40426450 onCreateView 대신 onActivityCreated 함수.. 더보기
[Kotlin] BindingAdapter 이용 하기 DataBinding을 이용해서 MVVM을 구현하시는 분들이 많으실꺼라 생각 됩니다.저 또한 열심히 공부중에 있는데요. 그 중에 Kotlin 에서 BindingAdapter를 어떻게 사용하는지 공유 해드릴까 합니다. 기본적으로 DataBinding에서 BindingAdapter가 어떻게 쓰이는지는 아래 내용을 참고 하시거나,구글링 해도 많은 자료 들이 있습니다.http://gogorchg.tistory.com/entry/AndroidDataBinding-ImageView-src%EC%97%90-%EC%97%B0%EB%8F%99-%ED%95%98%EA%B8%B0-%ED%95%A8%EC%88%98-%EC%97%B0%EA%B2%B0 ## Java public class ImageBindingModel { @B.. 더보기
[Annotation] 내가 생각하는 Annotation 요즈음 많이 사용되고 있는 Retrofit2 라이브러리나 Dagger 라이브러리를 보시면,Annotation을 이용하고 있는 것을 확인 할 수 있습니다. Retrofit은 Method에 @Get이나 @Post Annotation을 사용 하고,Dagger 같은 경우 Class에 @Module, Method에 @Provides 라는 Annotation을 사용 합니다. 그럼 어떻게 Annotation만 설정 해놨는데 자동적으로 제어가 가능 한 걸까?? https://medium.com/@ggikko/java-%EC%BB%A4%EC%8A%A4%ED%85%80-annotation-436253f395ad#.s04jpt1cw이 블로그를 보고 전 느낌을 받았습니다. 1. 클래스, 메소드, 매개변수등에 할당되는 특정 A.. 더보기
[Kotlin] 콜백함수 구현 Java에선 콜백 함수를 아래와 같이 많이 쓰입니다. // 콜백 함수 선언private interface OnStringCallback { void onCallback(String string); } private void testCallback(OnStringCallback callback) { callback.onCallback("hello callback"); } // 콜백 함수 실행testCallback(new OnStringCallback() { @Override public void onCallback(String string) { Log.d("Test","Called : "+string); } }); 위와 같이 콜백을 위한 interface를 선언 하고 해당 Interface의 함수를 통해서.. 더보기
[Kotlin] kotlin 프로젝트 생성 시, 참조할 만한 소스 Kotlin으로써 새로운 프로젝트를 시작하고자 할 때,참조할만한 괜찮은 소스가 있어서 공유 하고자 합니다. https://github.com/Plastix/Kotlin-Android-Boilerplate 소스 형태는 아래와 같다고 쓰여 있네요.LibrariesDagger 2 -> 의존 관계 주입(Dependency Injection) 라이브러리RxJava 2 and RxAndroid -> 요새 화두가 되고 있는 Reactive 라이브러리Retrofit 2 -> 네트워크 통신 라이브러리Picasso -> 이미지 로드 라이브러리 (전 Glide로 교체할 예정)Google Support Libraries -> 구글에서 지원해주는 라이브러리Testing LibrariesJUnitMockitoRequirement.. 더보기
[Kotlin] let을 이용한 Null 체크 val result: Boolean if (user != null) { result = write(user) } else { result = false }이런 케이스에서는 Kotlin에서는 다음과 같이 쓰는 것이 가능합니다.val result: Boolean = user?.let { write(it) } ?: false참고 : https://gist.github.com/Hazealign/1bbc586ded1649a8f08f#약간-특이한-부분 하지만, 위 소스에서 false가 아닌 {} 같이 구문을 이용하고자 한다면 어떻게 하면 될까요?? fun letTest(a: String?) { a?.let { Log.d("Test","letTest :: 1 : "+it) }.let { Log.d("Test","le.. 더보기
[Android] WebView 상에서 Intent Uri 실행 public class CustomWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("tel:")) { Intent call_phone = new Intent(Intent.ACTION_CALL); call_phone.setData(Uri.parse(url)); startActivity(call_phone); } else if (url.startsWith("sms:")) { Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); startActivity(i); } .. 더보기