개발/Android 11

[Android] 푸시메시지(FCM) 클릭시 파라미터 받기

[Android] 푸시메시지(FCM) 클릭시 파라미터 받기 1. FCM 서버 - 아래와 같은 형식으로 data, notification에 추가할 파라미터를 Key, Value형태로 추가해서 발송 { "data":{ "title":"푸시메시지 제목", "body":"푸시메시지 내용", "추가할 파라미터의 Key 값":"추가할 파라미터의 Value 값" }, "notification":{ "title":"푸시메시지 제목", "body":"푸시메시지 내용", "추가할 파라미터의 Key 값":"추가할 파라미터의 Value 값" } } 2. Android - 앱이 Background인 경우 onCreate에 해당 내용을 넣어주면 값을 받아올 수 있다 Bundle extras = getIntent().getExtr..

개발/Android 2021.10.21

[안드로이드] 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)

구글 플레이스토어 앱 검색 안됨 - 현재 앱을 검토하는 중입니다

구글 플레이스토어 앱 검색 안됨 - 현재 앱을 검토하는 중입니다 운전면허 필기시험 2020 완전무료 (모의고사 오답노트 제공) - Google Play 앱 2020년 운전면허 필기시험 어플리케이션입니다 도로교통공단 학과시험 문제은행 데이터를 토대로 만들어진 어플입니다. 전체문제, 유형별문제, 실전 모의고사, 오답노트 등의 메뉴를 제공합니다. 운전면허필기 합격을 위한 최종 마무리 점검!! - 실제 운전면허 학과시험 시간과 동일하게 40문제를 풀어보고, 모의합격여부를 즉시 확인해볼 수 있는 기능 제공. - 운전면허필기 모의고사를 푸는 중간에 이미 푼 문제에 대해 답안지 기능을 통해 정답을 수정할 수 있는 기능 play.google.com 구글 플레이 콘솔에서 '게시보류중' 상태에서 3일간의 기다림 끝에 앱이..

개발/Android 2020.02.04 (5)

구글 플레이 기기 및 네트워크 악용 정책 위반 - 유튜브 백그라운드

구글 플레이 기기 및 네트워크 악용 정책 위반 - 유튜브 백그라운드 예전에 쓰려고 했던 포스팅을 이제야 쓴다 유튜브 프리미엄이 나오면서 여러가지 정책들이 많이 생겼다 영상을 다운로드할 수 있으면 안되고 백그라운드에서 유튜브를 재생할 수 있으면 안된다 필자도 여러가지 문제를 겪었다 아래는 나의 관련 삽질을 기록해두었던 포스팅이다 구글 플레이스토어 게시 보류 중이 며칠 째 구글 플레이스토어 게시 보류 중이 며칠 째.. 구글 플레이스토어의 개발자 화면에서 배포한 모든 어플리케이션을 보는 화면에 최근 올린 앱에 '게시 보류 중' 이라는 문구가 나타났다 이전에도 본적이 있지만 하.. 6developer.com 구글 플레이 스토어 - 앱이 거부되었습니다 구글 플레이 스토어 - 앱이 거부되었습니다 구글 플레이스토어 ..

개발/Android 2019.11.20 (2)

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

구글 플레이스토어 지원하는 기기 0대 안드로이드 앱 배포 후

구글 플레이스토어 지원하는 기기 0대 안드로이드 앱 배포 후 안드로이드 개발자들은 참 이런일 저런일 참 많겠다 힘내요 모두들 1. 어떤 문제가 발생했는가 구글 플레이 콘솔에서 출시 관리 -> 기기 카탈로그에 들어가 보았더니 앱에서 지원하는 기기가 0건으로 표시되는 문제를 해결해보았다 필자는 해결 후 캡쳐화면이라 이 앱에서 제외된 기기가 0대로 표시된다 2. 문제 파악 필자가 배포한 앱의 경우 디바이스의 특정 하드웨어인 카메라 기능를 사용하고 앱 매니페스트에 선언된 요소 를 통하여 camera에 대한 하드웨어 기능들을 작성해두었다 여기에서 문제가 발생했다. 기능에 대해 android:required="true"을 선언하는 것은 기기에 지정된 기능이 없는 경우 애플리케이션이 기능을 작동할 수 없거나 작동하도..

개발/Android 2019.09.04 (4)

구글 플레이 스토어 - 앱이 거부되었습니다

구글 플레이 스토어 - 앱이 거부되었습니다 구글 플레이스토어 게시 보류 중이 며칠 째 구글 플레이스토어 게시 보류 중이 며칠 째.. 구글 플레이스토어의 개발자 화면에서 배포한 모든 어플리케이션을 보는 화면에 최근 올린 앱에 '게시 보류 중' 이라는 문구가 나타났다 이전에도 본적이 있지만 하.. niphyang.tistory.com 게시 보류 중이 며칠째 진행되다가 결국.. 앱이 거부되었습니다 라는 문구가 보여지면서 메일이 도착했다 메일의 내용은 위와 같다 기기 및 네트워크 악용 정책 위반 본 앱은 유튜브 영상을 리스트화하며 직접 우수한 컨텐츠 채널을 가져와 보여주는 앱이다 앱이 서비스 약관을 위반하는 방식으로 서비스 또는 API에 액세스하거나 이를 사용해서는 안 됩니다. 예를 들어 앱에서 YouTube ..

개발/Android 2019.08.09 (15)