일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 유튜브
- image
- 의존성주입
- MVVM
- 안드로이드
- studio
- viewpager
- ADB
- coroutine
- 안드로이드스튜디오
- WebView
- 에러
- 안스
- 깃헙
- 코틀린
- Retrofit
- RecyclerView
- Android
- Kotlin
- Github
- 스튜디오
- flow
- Gradle
- 웹뷰
- 안드로이드 스튜디오
- error
- 코루틴
- 레트로핏
- youtube
- build
- Today
- Total
목록안드로이드 (150)
코딩하는 일용직 노동자

전체화면 사이즈의 Dialog 로 만들어진 화면이 있습니다. 메인화면에서 이동되는 서브화면이 모두 Dialog 로 만들어진 화면입니다. 그리고 이 화면은 웹뷰가 전체화면 사이즈로 배치되어 있습니다. 실행해보면 웹뷰로된 액티비티와 별반 다를게 없는 서브화면입니다. 이 화면이 키보드가 올라와있는 상태에서 웹의 팝업이 뜨게되면 키보드가 내려가면서 해당 부분이 제대로 그려지지 않아 하얗게 보이는 현상이 발생했습니다. 버튼 클릭시 키보드가 내려가는 시간과 팝업이 보이는 시간이 같아서 발생하는듯 합니다. 처음에는 팝업이 보이는 타이밍을 0.2~0.3초 정도 딜레이를 주면 되지 않을까 했는데... 문제는 로그인 화면뿐만 아니라 텍스트입력창이 있는 다른 여러 서브화면에서 똑같은 현상이 있기때문에 모든 화면의 팝업들에 ..

Android 10(Q) 부터는 기존의 저장공간과는 다른 개념으로 바뀌었습니다. 10 이전의 안드로이드는 기본적으로 내부저장공간과 외부저장공간으로 나뉩니다. # Android 10(Q) 이전의 Storage 내부저장공간은 샌드박스 형식으로 보호되는 공간을 할당받습니다. ex) com.kakao.talk, com.kakao.story, com.app.a 그리고 각 앱은 자신의 저장공간만 접근하고 사용할 수 있습니다. 10 에서도 내부저장공간은 마찬가지로 사용됩니다. 반면 외부저장공간은 하나의 큰 공통저장공간으로 운영되었습니다. READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE 권한만 있으면 어떤앱이 작성한 파일이든, 어느 경로에 있든, 어떤 파일이든 모두 접근/수정할 수 있었..

let 객체의 null 체크에 주로 사용. val userName: String? = "" userName?.let { println("userName : $userName") } apply 객체의 생성과 동시에 값을 초기화 할때 주로 사용. val textView = TextView(this).apply { text = "Hello World!!" setOnClickListener{} } run 이미 생성된 객체를 재접근해서 값을 셋팅할때 주로 사용. textView.run { text = "안녕하세요" setOnClickListener{} } with View 에 접근할때 주로 사용. fun ViewHolder.onBindViewHolder() { with(binding){ adapter = this..

앱에서 파일 첨부하는 기능을 구현하던중 Intent.createChooser 로 구현했더니 파일을 선택하더라도 파일의 정보가 앱으로 리턴되지 않는 경우가 있었습니다. (특정 파일 탐색기 앱에서만 선택된 파일의 정보가 리턴되었다.) 쓸만한 파일탐색기 라이브러리를 찾아서 사용해보니 개발기간도 많이 단축할 수 있었고 편리하게 이용할 수 있었습니다. https://github.com/hedzr/android-file-chooser hedzr/android-file-chooser a lightweight file/folder chooser or picker. Contribute to hedzr/android-file-chooser development by creating an account on GitHub...

안드로이드 개발을 할때 보통 테스트폰을 컴퓨터에 연결한 상태로 디버그를 하게 됩니다. 하지만 Wifi 를 이용해 무선으로 디버깅할 수 있습니다. terminal 에서 아래의 방법대로 진행하면 됩니다. # wifi 상태에서 디버깅 하는 방법 폰과 컴퓨터를 케이블로 연결한 상태에서 진행합니다. adb tcpip [port] > adb tcpip 5555 adb connect [ip]:[port] > adb connect 192.168.0.35:5555 이제 컴퓨터와 폰의 케이블을 제거해도 네트워크로 디버깅 가능합니다. # USB 디버깅 상태로 다시 전환하는 방법 다시 폰 연결후 adb -s [ip]:[port] usb > adb -s 192.168.0.35:5555 usb 연결된 디바이스 목록 확인 ad..

SSL 적용된 서버 접속하기 위한 소스. SSL 처리를 무시하는 소스이다. // TI2 val socketFactory = SSLContext.getInstance("SSL").let { sslContext -> val trustAllCerts = arrayOf(object : X509TrustManager { override fun getAcceptedIssuers(): Array? = emptyArray() override fun checkClientTrusted(certs: Array, authType: String) = Unit override fun checkServerTrusted(certs: Array, authType: String) = Unit }) sslContext.init(null,..

2019년 1월9일부터 안드로이드 SMS 권한정책이 변경되었습니다. 기존에는 RECEIVE_SMS 권한을 이용해서 SMS 내용을 읽고 인증번호를 자동입력을 해주었지만 이제는 예외신청을 하지 않으면 구글 플레이스토어에서 삭제 대상이 됩니다. https://developers.google.com/identity/sms-retriever/verify 이제는 SMS Retriever를 이용해서 권한 허용없이 문자를 읽어올 수 있습니다. 이 기능에는 약간의 제한사항이 있습니다. Android 단말에 Google Play Service version 이 10.2 이상 설치되어 있어야합니다. 그리고 SMS에도 몇가지 규칙이 있습니다. 1. 문자내용이 140byte를 초과하면 안됩니다. 2. SMS 맨앞에 가 반드시 ..

안드로이드 프로젝트를 Javadoc 처럼 html 문서로 만들 수 있습니다. 바로 dokka 입니다. 일단 project/build.gradle 파일에 dokka 플러그인을 추가해줍니다. ext.dokka_version = '0.9.18' dependencies { classpath 'com.android.tools.build:gradle:3.6.3' classpath 'com.google.gms:google-services:4.3.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the..

# 방법1 res/style.xml 파일 수정. 메니페스트 파일에서 theme 에 설정. # 방법2 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStatusBarColor() window.statusBarColor = Color.parseColor("#ff0000") }

코틀린 안드로이드 웹뷰 셋팅. webView.settings.apply { this.setSupportMultipleWindows(false) // 새창 띄우기 허용 this.setSupportZoom(false) // 화면 확대 허용 this.javaScriptEnabled = true // 자바스크립트 허용 this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용 this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 this.useWideViewPort = true // html의 viewport 메타 태그 지원 this.builtInZoomControls =..