본문 바로가기

#android

[Android] scrollview match_parent not working ScrollView 안에 있는 View에 match_parent를 줬는데도 높이가 변경이 되지 않는다. 위 소스를 보면 간단하다. NestedScrollView 안에 TextView가 들어 있다.layout_height 값이 match_parent로 되어 있지만, 아래와 같이 높이가 변경 되지 않았다. 이럴 경우 ScrollView에 속성 하나만 추가해주면 된다. android:fillViewport="true" 위 속성만 추가 해주면 된다.그럼 ScrollView 안에 있는 View를 Strech 해주는 역할을 합니다. 출처: https://stackoverflow.com/a/10211418 참고 하세요. 더보기
[Android] HostnameVerifier에 대한 Warning이 떴을 경우 구글 플레이에 앱을 등록할 때 아래와 같은 보안 알림을 받을 수도 있다.이것이 무엇인가?? HostnameVerifier를 안전하게 사용하고 있지 않다는 건데 혹시 소스가 아래와 같은 형태로 되어 있지 않나 확인해보자. try { TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { X509Certificate[] myTrustedAnchors = new X509Certificate[0]; return myTrustedAnchors; } @Override public void checkClientTrusted(X509Certificate[].. 더보기
[Android] image-chooser-library FileUriExposedException 앱에서 카메라나 이미지 파일 접근을 할 때 아래 Library를 사용하시는 분들이 있으실 겁니다. https://github.com/coomar2841/image-chooser-library 위 라이브러리를 사용했는데 아래와 같은 에러가 발생 할 경우가 있습니다. FileUriExposedException: android.os.FileUriExposedException: file:///storage/emulated/0/AppName/AppName%20Pictures/061aafec-0acd-488d-b8b0-c7d5fb8c152a.jpg exposed beyond app through ClipData.Item.getUri() 위와 같이 FileUriExposedException 에러가 발생 한다.어떻게 .. 더보기
[Android] SSL Disable 시키기 (Retrofit2, OkHttp3) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384private RetrofitBuilder(Context context, String url) { builder = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .client(getUnsafeOkHttpClient(context, token, SysUtils.getVersionName(context))) .bui.. 더보기
[Android] android:launchMode="singleTask" 사용 시 발생하는 문제점 앱 실행 시 첫 화면을 위와 같이 설정하시는 분들이 많을 꺼라 생각 됩니다.머 다들 이해하시겠지만, android:launchMode="singleTask" 요놈이 제법 골치꺼리 더라구요. 아마 singleTask를 화면이 Activity를 유일한 Task에 하나만 띄우기 위해서 많이 사용하시는 듯 합니다만,위와 같이 설정 할 경우 아래와 같은 문제가 생기네요. 1. Task 목록이 아닌 App 아이콘으로 실행 시, 무조건 Main 화면이 실행 된다. -> 즉, 기존에 Task Stack에 쌓여 있는 화면들은 무시가 되는 거죠. 2. onActivityResult가 호출이 안된다고 합니다. -> startActivityForResult를 이용하여 결과를 받을 수 없다는 의미죠. 참고 : http://jw.. 더보기
[Android] 특정 화면 잠금 해제 특정 화면이 동작하고 있을 때나 어떤 이벤트를 진행 했을 때,화면을 자동 잠금 모드로 바뀌는 것을 막을 수 있는 방법을 공유 하고자 한다. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); ... } 위와 같이 FLAG_KEEP_SCREEN_ON 을 넣어주면 된다. 혹시나 FLAG_KEEP_SCREEN_ON만 넣었는데 안되시는 분들은 위 소스 같이FLAG_TRUN.. 더보기
[Android] 구글플레이에 등록된 앱 버전 확인 https://github.com/rampo/UpdateChecker 위 라이브러리를 쓰면 구글 플레이에 등록된 앱 버전을 넘겨 받을 수 있다... 어떻게 그럴수가 있지??? 해서 소스를 봤더니... 구글 플레이 앱 페이지에서 크롤링하듯이 앱 정보만 빼온 것이었다. 라이브러리 에서 아래 소스 위치를 찾는다. itemprop="softwareVersion"> 이 부분이 현재 앱 등록 버전을 보여주는 div 태그 위치 이다. 이 위치에 있는 버전을 사용 할 수 있는 것이다. 아래는 Vingle 앱 페이지에 소스 한 부분이다. 현재 버전 3.3.4 하지만!! 문제점이 있다. 기기 버전에 따란 APK를 다양하게 올릴 수도 있다.그런 앱같은 경우 위 로직으로는 파악 할수 없다. 아래와 같이 '기기에 따라 다릅니다.. 더보기
[오늘의 한줄][2017.3.27] 이직 준비를 하면서 느낀 점 항상 초심을 가지자는 말을 머리로 새기면서, 기초를 간과 하고 있었다. 이직 준비와 면접을 보면서 충격을 받았다. - weakpreference, softpreference, strongpreference 차이는?- Android onPause와 onStop에 차이는?- Intent란?- Context란?- AsyncTask과 Thread의 차이점은?... 실제 실무를 하면서 사용하고 있는 클래스나 함수들인데도 설명하기가 어려웠다.Java 개발자 이면서 Call by reference에 대해 설명도 버벅 댔다.아니 대답을 못했다고 해도 될듯 하다. Android 개발만 6년을 해왔는데...Kotlin과 MVVM 패턴등을 애기하면서기초인 부분을 간과 하고 있었다. 이제부터라도 다시 공부해야 겠다.기초부터 .. 더보기