Android 5

[안드로이드] SQLite No such table (code 1 SQLITE_ERROR)

새벽 1시 20분인데별것도 아닌 얘 때문에 잠을 못자고 있었는데 드디어 잘 수 있게 되었으나 같은 검색, 같은 삽질을 또 하지 않기위해 기록 후 잠들고자 글을 쓴다 1. 로그캣에 아래와 같은 에러가 나타나면서 앱이 비정상 종료 되었다 - Caused by: android.database.sqlite.SQLiteException: no such table: XXX (code 1 SQLITE_ERROR): , while compiling: SELECT XXX FROM XXX; - Assets 폴더에 미리 만들어놓은 SQLite 파일을 넣어두고 /data/data/[Package Name]/databases/.. 경로로 복사해서 읽으려하는데 발생한 오류다 - Android Studio의 View -> Tool..

개발/Android 2020.04.07 (1)

Android 루팅 여부, 루트 권한 체크하기

Android 루팅 여부 체크하기 안드로이드 개발을 하다가 루팅된 기기에서는 앱이 동작하지 않도록 해야하는 요구사항이 생겼다 1. Command를 실행할 수 있는 Runtime.getRuntime().exec( command ); 을 이용하여 루트권한이 있는지 체크한다 private boolean isRooted() { boolean runtimeFlag = false; try{ Runtime.getRuntime().exec("su"); runtimeFlag = true; }catch(Exception e){ runtimeFlag = false; } if(findBinary("su") || runtimeFlag){ return true; }else{ return false; } } - true : 루트권..

개발/Android 2019.11.08

html 난독화는 가능한가 (Android Assets APK 압축해제)

html 난독화는 가능한가 (Android Assets APK 압축해제) Assets이라는 외부리소스 폴더에 html, js, css 등의 파일들을 넣고 해당 경로를 읽어 보여주는 웹뷰 형태로 안드로이드 앱을 개발한 후 APK를 생성하였다 APK는 알집 7집 등 여러 압축해제 프로그램으로 압축해제가 가능하며 압축을 해제하면 Assets 속의 파일이 그대로 보여진다 어떻게하면 html 파일을 제대로 볼 수 없게 할것인가를 고민해보았다 1. 파일 자체를 암호화 후 복호화해서 보여준다 (쉽게 복호화가 가능한 base64등의 인코딩이 아니라면 가장 확실한 방법인 것 같다) 2.귀찮으니까 바로 알아보기 어렵게만 작업해보자 1) 안드로이드 웹뷰를 생성할때 헤더 속 User-Agent 값을 변경할 수 있는데 특정 문..

개발/Android 2019.11.05

Android NetworkOnMainThreadException 해결

Android NetworkOnMainThreadException 해결 1. 개요 - http://niphyang.tistory.com/930 - 위 포스팅에 나와있는 HttpURLConnection을 Android 환경에서 작업하다 겪은 내용에 대한 정리이다 2. 에러 내용 (https://developer.android.com/reference/android/os/NetworkOnMainThreadException) 응용 프로그램이 기본 스레드에서 네트워킹 작업을 수행하려고 할 때 발생하는 예외입니다. 이것은 Honeycomb SDK 이상을 대상으로하는 응용 프로그램에서만 발생합니다. 이전 SDK 버전을 대상으로하는 응용 프로그램은 기본 이벤트 루프 스레드에서 네트워킹을 수행 할 수 있지만 사용하지 ..

개발/Android 2019.10.28

FCM 푸시 메시지를 구현하며 발생한 문제들을 모두 해결해보았다

FCM 푸시 메시지를 구현하며 발생한 문제들을 모두 해결해보았다 GCM부터 FCM까지 구현하면 구현할수록 말도 많고 탈도 많았던 개발이었던 것 같다 필자는 웹뷰하나 달랑 있는 프로젝트에 필요한 기능을 기본적인 방법으로 직접 구현하는 형태로 작업을 주로 하고 있어서 항상 서버 쪽 FCM 발송 클래스 1개, 안드로이드 쪽 클래스 4개를 통으로 가지고 다닌다 별거아닐 수 있지만 여태 경험한 이야기를 해볼까 한다 소스의 일부는 이해를 돕기위해서나 한 클래스에서 보여질 수 있기위해 임의로 변경하여 작성하였기 때문에 복사하여 사용은 가능하지만 각자의 스타일대로 수정이 필요하다 1. 안드로이드 앱을 설치할 때 마다 토큰이 변경된다 //MyFirebaseInstanceIDService.java public class ..

개발/Android 2019.10.07