본문 바로가기

분류 전체보기239

[안드로이드] SMS Retriever API 내부앱공유에서 안되는 이유 (Debug Hash 값, Release Hash 값) SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 Callback 받는 로직을 만든 적이 있다. https://devnuts.tistory.com/253 [안드로이드] SMS Retriever API 자동입력하는 방법은? (*Android Hash Key 가져오기 *KMC 등 본인확인 기관 SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 문자로 받은 인증번호를 Callback 받아 화면에 바로 노출시킬 수 있다. 아래 링크에 사용 방법이 잘 설명되어 있으니, 보면 좋을 것 같다. ht devnuts.tistory.com 위와 같이 만들었고, 테스트를 하려고 했는데 이상하게 내부 앱공유에서 수신문자 Text 가 콜백이 들어오질 않는다. 어? 왜그럴까?.. 2024. 4. 3.
[안드로이드] SMS Retriever API 자동입력하는 방법은? (*Android Hash Key 가져오기 *KMC 등 본인확인 기관 문의 ) SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 문자로 받은 인증번호를 Callback 받아 화면에 바로 노출시킬 수 있다. 아래 링크에 사용 방법이 잘 설명되어 있으니, 보면 좋을 것 같다. https://developers.google.com/identity/sms-retriever/overview?hl=ko SMS Retriever API를 사용한 자동 SMS 인증 | Credential Verification | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 SMS Retriever API를 사용한 자동 SMS 인증 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세.. 2024. 3. 17.
[안드로이드] release 해서 앱 실행하면 왜 crash 가 발생할까? (ProGuard leads to NullPointerException) 겪은 이슈 WebView 를 이용하여 하이브리드 App 을 개발하고, release 로 .apk 를 말아 사업팀에 전달하다 발생한 이슈였다. 발생한 에러는 아래와 같다. 자꾸 WebViewClient 쪽에서 url 이 Null 이 발생하여 NullPointerException 이 발생하는 Error 만 발생했다. WebViewClient.class 83 줄에는 아래와 같은 코드가 있다. @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); } 저 부분에서 왜 Null 이 발생했던 걸까?? Why?.. 2024. 2. 25.
[안드로이드] java. lang. IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time. (Room Update) 흔한 이슈 위와 같은 에러를 자주 만난 적이 있을 것이다. 위 Error 를 해석하면 무엇일까? UI 가 장시간 Lock 이 될 수 있기 때문에 기본 스레드에서 데이터베이스에 허용시킬 수 없습니다. 라는 뜻. 무슨 말일까? UI 변경이 이루어지는 작업일 경우, UI(main) 스레드를 사용하지말라는 이야기다. 장시간 UI 가 멈추는 상황일 때, ANR이 발생해 앱이 죽을 수 있다. 따라서 다른 스레드를 이용해야 한다. 겪은 이슈 Room 을 이용하여 데이터를 저장했고, 저장한 데이터를 Update 하여 사용자 화면(UI)에 보이는 데이터가 바뀌어야 했다. CRUD 중, Update와 Delete 하는 부분에서 위와 같은 에러가 발생하였다. 이슈가 발생한 코드는 아래와 같다. fun updateCoupo.. 2024. 2. 13.
[안드로이드] by viewModels, LiveData Observing 이 안되는 이유 ViewModel 초기화 하는 방법 우리는 데이터 보존을 위해 ViewModel 를 초기화하여 View(Fragmet, Activity) 에서 사용한다. ViewModel 를 초기화 하는 방법은 대표적으로 두 가지로 나눌 수 있다. 1. ViewModelProvider. private val viewModel: MyViewModel by lazy { ViewModelProvider(getViewModelOwner())[MyViewModel::class.java] } 2. by viewModels private val viewModel by viewModels() 겪은 이슈 as-is > to-be 로 코드 리팩토링할 때 as-is 에서 작업했던 ViewModel 초기화 방식과 to-be 방식이 위 두 가.. 2024. 2. 4.
[안드로이드] 키보드 자판이 보이고 안 보이고 감지하는 콜백함수 (Keyboard show hide) 문제 정의 현재 회사 코드 정책 상, 싱글 액티비티를 유지해야 했고, Fragment 에 원하는 softInputMode 를 적용하고 싶었다. 그리고 AndroidManifest.xml 내에 windowSoftInputMode 가 세팅이 되어있지 않았다. 즉, default 모드 상태인 stateUnspectified 값이며 이 속성은 시스템에서 적절한 상태를 선택하거나 테마의 설정을 사용하게 한다. 그러다보니 Fragment UI 작업 시, 하단 버튼이 editText 에 focusing 이 될 때마다 올라오게 되며 원치않게 버튼이 뷰를 가리게 됐다. 매니페스트에 내가 원하는 속성을 적용하게 될 경우, 앱 내 여러 서비스들 중에 EditText 를 사용하는 부분에 영향이 가서 고민하게 됐다. 일단, A.. 2024. 1. 28.
[안드로이드] 이전에 설치한 앱 이미지 파일이 재설치 후 왜 삭제가 안될까? (다른 앱 이미지 삭제 불가) *갤러리 폴더 삭제 아니 왜!!!!! 이전 빌드한 앱에서 외부저장소(공용저장소)에 이미지파일을 저장한 게, 삭제 후 재설치한 앱에서 모든 이미지 삭제로직에서 삭제가 안돼.... 왜 삭제가 안돼? 왜!!!!! 권한이 필요했다........ 다른 앱 이미지 업데이트 불가 모든 이미지가 삭제가 안되는 경우, // 이슈 상황 private fun removeImageFiles(context: Context) { val contentResolver: ContentResolver = context.contentResolver val externalStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) val folderPath .. 2023. 11. 15.
[안드로이드] Fragment replace 이전 Fragment 버튼 리스너 동작 이슈 Fragment 간 이동 할 때 add, replace, remove, addToBackStack 등 다양한 방법으로 Fragment 를 다룰 수 있다. 내가 겪은 이슈는 A -> B 로 Fragment 를 이동할 시 replace 를 이용하면 기존 stack 에 쌓인 Fragment(A) 는 사라지고, replace 로 대체되는 Fragment(B) 만 남아 있어야 한다. 하지만, 그렇지 않았다. 그래서 Fragment(A) 에 있는 버튼 리스너 들이 Fragment(B) View 에서 눌리게 된다... 일단 나는 아래와 같이 코드를 작성해서, 범용적으로 Fragment 를 사용하려고 했다. replace, add, remove, popBackStack fun Activity?.moveFragment(.. 2023. 9. 25.