반응형

Android 142

[Android] Foreground, Background 감지 (ActivityLifecycleCallbacks)

안드로이드에서 Foreground, Background를 감지하는 방법 Foreground, Background를 감지하는 방법은 아래 두 가지 경우로 나눌 수 있습니다. 1. Background/Foreground로 변경됐을 때 감지하는 방법 - Background -> Foreground로 변경된 경우 - Foreground -> Background로 변경된 경우 2. 현재 상태가 Background/Foreground인지 체크하는 방법 - 현재 Background 인지 체크하는 경우 - 현재 Foreground 인지 체크하는 경우 Github 샘플 https://github.com/eunsuu1015/AndroidSample/tree/main/ActivityLifecycleCallbacks GitH..

[Android, iOS] 경제적 자유 계산기 앱 소개

경제적 자유란 무엇일까요? 충분한 자산이 있고 매월 원하는 만큼의 현금흐름이 있어 경제적으로 자유로운 상태를 의미합니다. 경제적 자유를 누리려면 얼마를 모아야 하나요? 꼬박꼬박 매월 100만 원씩 저축하면 20년 뒤엔 부자가 될 수 있을까요? 불가능합니다. 그래서 투자를 해야 합니다. 투자를 통한 경제적 자유 이루기 목표한 경제적 자유 금액을 위해 매월 얼마만큼 투자하면 되는지, 내 나이를 기준으로 몇 살엔 얼마만큼의 자산을 모을 수 있는지를 계산할 수 있는 애플리케이션이 있습니다. Android https://play.google.com/store/apps/details?id=com.taeu.economicfreedom 나 퇴사할래 - 경제적 자유 계산기 - Google Play 앱 나 퇴사할래 - 경..

[AndroidStudio] An exception occurred applying plugin request 오류 해결 방법

Android Studio 업그레이드 후 새로운 프로젝트를 생성하고 빌드하였더니 아래와 같은 오류로 컴파일 실패가 발생했다. 오류 텍스트 Build file 'C:\AndroidStudio\workspace\test\MyApplicationTest2\app\build.gradle' line: 2 An exception occurred applying plugin request [id: 'com.android.application'] > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. You can tr..

[Android] Database 파일명 변경하기 (rename db filename)

Database filename 변경하는 방법 renameTo() 사용하여 변경합니다. File dbFile = getDatabasePath("dbfilename"); boolean result = dbFile.renameTo(new File(getDatabasePath("dbfilename").getParent(), "newdbfilename.db")); Log.d("TAG", "" + result); getDatabasePath() 메서드를 찾을 수 없다면 Context에서 조회해보세요. public static void changeDbFileName(Context context) { File dbFile = context.getDatabasePath("dbfilename"); boolean resu..

[Android] 앱 다크 모드 비활성화 방법 (Dark Mode)

안드로이드 앱에서 다크 모드를 비활성화하는 방법 최신 안드로이드 스튜디오에서 프로젝트를 생성하면 다크 모드가 자동으로 지원됩니다. 다크 모드를 지원하지 않으려면 themes.xml 파일을 수정하면 됩니다. themes.xml 파일 위치 AndroidStudio에서 확인 위치 : res\values\themes 파일 탐색기에서 확인 위치 : res\values 또는 res\values-night 수정 방법 themes.xml (night) 파일의 style를 바꿔줍니다. 수정 전 수정 후 수정 후 앱을 빌드해보면 디바이스 다크모드와 상관 없이 Light 모드로 앱이 실행됩니다.

[Android] Handler() deprecated

Handler() deprecated 해결 방법 Deprecated 기존에는 Handler()를 선언할 때 생성자에 아무런 값도 넣지 않았지만 현재는 deprecated 되었다. 그 이유는 핸들러 생성 중에 Lopper를 명시하지 않으면 작업이 자동으로 손실, 충돌 등의 버그가 발생할 수 있다고 한다. 공식 문서 내용 https://developer.android.com/reference/android/os/Handler#Handler() Handler | Android Developers developer.android.com 해결 방법 생성자에 Looper.getMainLopper()를 넣어주면 된다. // Handler handler = new Handler(); // deprecated Handl..

[Android] getDrawable() deprecated

getResources().getDrawable deprecated 해결 방법 Deprecated API 22에서 getDrawable() 이 deprecated 되었다. 공식 문서 내용 https://developer.android.com/reference/android/content/res/Resources#getDrawable(int) Resources | Android Developers developer.android.com 해결 방법 아래와 같이 ContextCompat.getDrawable()을 사용한다. // Drawable drawable = getResources().getDrawable(img);// deprecated Drawable drawable = ContextCompat.ge..

[Android] 앱, 패키지 설치 여부 확인 (App Install Check)

안드로이드에서 디바이스에 앱이 설치되어 잇는지 여부를 조회하는 방법 조회하려면 패키지명을 알아야 한다. 방법 1 String PACKAGE_NAME = "com.kakao.talk"; private boolean isPackageInstalled(String packageName, PackageManager packageManager) { try { packageManager.getPackageInfo(packageName, 0); return true; } catch (PackageManager.NameNotFoundException e) { return false; } } // 사용 방법 PackageManager pm = getPackageManager(); if (isPackageInstalled..

[Android Studio] Installed Build Tools Revision 31.0.0 is corrupted 에러 해결 방법

안드로이드 스튜디오 Installed Build Tools Revision 31.0.0 is corrupted 오류 해결 방법 새 컴퓨터에 안드로이드 스튜디오를 설치하고 빌드를 진행하니 아래와 같은 오류가 발생했다. 오류 Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option..

[안드로이드 카톡테마] 회색 카톡테마 (심플)

회색 카톡 테마 / 심플 카톡테마 회색 색상으로 제작한 심플한 카톡 테마입니다. -스크린샷 정보- 디바이스: 갤럭시 노트10+ 폰트: TYPE서울의밤 설정 화면 크게/작게: 가장 작게 -미리 보기- 인트로 화면 친구 목록 화면 채팅방 화면 암호 화면 - 비밀번호 암호 화면 - 패턴 [다운로드] 다운로드는 Play 스토어에서 가능합니다! play.google.com/store/apps/details?id=com.tistory.es1015.kakao.theme.gray 회색 카톡테마 - 심플 카톡테마 - Google Play 앱 회색으로 제작한 심플 카톡테마 * 이 어플은 '카카오톡'에서만 적용되는 카톡테마입니다. Play 스토어에서 '카카오톡'을 먼저 다운로드 해 주세요. ---- 개발자 연락처 : 006..

[Android] Play스토어 앱 업로드 절차

플레이스토어 앱 업로드 방법 사실 요즘은 구글 플레이 콘솔에서 엄청 친절히 알려주고 있기 때문에 업로드가 쉬워졌다. 그래서 이 글도 사실 설명이라기보다는 어떤 절차로 진행되는지를 스크린샷 위주로 정리했다. 시작 전 준비사항 구글 개발자 계정 필요! 개발자 계정이 있어야 앱을 업로드할 수 있는 것은 당연하죠 업로드 순서 1. Google Play Console 진입하여 앱 만들기 선택 play.google.com/console/ 2. 앱 만들기 시작 앱 이름 및 기본 언어 등 선택 유료 또는 무료: 앱을 게시하기 전에는 수정 가능하나, 한 번 앱을 게시한 후에는 무료 앱을 유료로 변경할 수 없음 앱을 만들려면 요청에 있는 개발자 프로그램 정책과 미국 수출 법규는 무조건 체크해야 함 모든 정보 입력 후 하단..

[Android] AES256 암호화 복호화 (2가지 방법)

AES256 암호화하는 방법 키를 직접 지정해서 암호화, 복호화하는 방법 키 스토어에서 생성한 키를 사용해서 암호화, 복호화하는 방법 1번 방법이 일반적으로 많이 사용되고 알려진 방법이다. 방법 1. 키를 직접 지정해서 암호화, 복호화하는 방법 샘플 코드 public static byte[] iv = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 }; // 사용자 지정 키로 AES256 암호화 public static String encByKey(String key, String value) throws Exception { return encByKey(key.getBytes()..

[Android] EditText showSoftInput 작동 안할 때 해결 방법

EditText showSoftInput()으로 키보드를 보이게 하려고 할 때, 작동 안 하는 경우가 발생한다. 그런 경우는 EditText에 포커스가 없기 때문에 발생하는 것이다. 해결 방법은 showSoftInput()을 호출하기 전에 EditText에 requestFocus()로 포커스를 주는 방법이다. requestFocus() Android 공식 문서 설명 아래 링크에서 requestFocus 검색 developer.android.com/reference/android/view/View View | Android 개발자 | Android Developers developer.android.com 예제 코드는 아래와 같다. // 초기화 EditText et = (EditText)findViewBy..

[iOS, Android] 사이즈별 앱 아이콘 생성 makeappicon (icon generator)

iOS 또는 Android 앱 개발 시 앱 아이콘이 사이즈별로 필요하다. 이때 큰 사이즈의 아이콘 이미지 1개만 있으면 운영체제에 맞게 사이즈별로 만들어주는 좋은 사이트가 있다. iOS는 사이즈별로 1024x1024, 40x40 등등 모든 사이즈에 맞춰 만들어주고 Android도 사이즈별로 hdpi, xxxhdpi 등 사이즈에 맞춰서 만들어준다. 사용 방법 1. 사이트 접속 makeappicon.com/ Developer Tool - App Icon Resizer MakeAppIcon is an app icon resizer that helps developers and project managers generate the app icons required by App Store & Google Play..

IT/팁 2020.12.12

[안드로이드] SHA256 해시 알고리즘 예제

안드로이드 자바 SHA256 해시 알고리즘 예제이다. 결과를 byte[]로 리턴 public static byte[] sha256(String input) { byte[] result = null; try { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(input.getBytes()); result = md.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return result; } 결과를 String(Hex)으로 리턴 위 코드에서 StringBuffer 부분만 추가되었다. public static String sha256ToString(String..

[안드로이드] 앱 버전 비교 예제 (버전 표기법, 규칙)

일반적으로 앱 버전을 표기하는 방법과 규칙에 대해 설명한다. 버전 표기법 일반적으로 앱 버전은 1.0.0 식의 구조를 가지고 있으며 점(.)으로 구분된다. . . Major Version: 1부터 시작. 앱 전체 디자인 또는 기능 등이 매우 크게 바뀌는 경우 올림 Miner Version: 0부터 시작. 기능 추가 기능 변경 등의 경우 올림 Build or Maintenance Version: 1부터 시작. 자잘한 버그 수정, 코드 보완 등 미미한 변화가 발생한 경우 올림. 패치 버전이라고도 함 버전 비교 참고사항 버전은 소수가 아닌 각 버전의 숫자다. 예를 들어 1.0.1과 1.0.10 두 버전이 있을 때 아래와 같다. 1.0.1과 1.0.10은 같은 버전이 아니다. 1.0.1은 1번째 메이저 버전, ..

[안드로이드] 음악파일 재생하기 (MediaPlayer)

안드로이드에서 MediaPlayer를 사용해서 프로젝트 리소스 폴더 내 음악파일을 재생하는 예제이다. 지원되는 음악 파일은 mp3, wav 형식 등이고 더 자세한 형식을 아래 링크에서 확인 가능하다. developer.android.com/guide/topics/media/media-formats?authuser=1&hl=ko 1. raw 파일 생성 res 폴더 안에 raw 파일을 생성한다. res 폴더에서 마우스 우클릭 > New > Android Resource Directory 2. Resource type으로 raw 선택 후 OK를 선택한다. raw 폴더가 생성된다. 3. raw 폴더 안에 재생할 음악 파일을 추가한다. 예제에서는 test.mp3 파일을 사용한다. 4. xml 레이아웃에 버튼을 추..

[안드로이드] Find Security Bugs 사용 방법 (소스코드 정적 분석 도구)

안드로이드 소스코드 정적 분석 도구 Find Security Bugs 설치 방법과 사용 방법 소스코드 분석은 정적 분석과 동적 분석으로 나뉜다. 정적 분석: 실제 프로그램(웹, 애플리케이션) 실행 없이 프로그램 소스코드로 분석 진행 동적 분석: 실제 프로그램을 실행하여 분석 진행 해당 글에서는 안드로이드 스튜디오에서 정적 분석을 하기 위한 Find Security Bugs 사용법을 소개한다. Find Securt Bugs: find-sec-bugs.github.io/ Find Security Bugs Sonar Qube with FindBugs plugin (version 3.2+). find-sec-bugs.github.io Find Security Bugs는 Eclipse, IntelliJ/Andro..

[Android] HTTPS 통신 시 사설인증서 사용 방법 (SSLHandshakeException, SSLPeerUnverifiedException)

HTTPS 통신 시 사설인증서 사용하는 방법 사설 인증서의 경우, 공인된 인증기관에서 인증을 받은 것이 아니기 때문에 인증서 검증을 우회하는 방법을 사용해야 한다. 인증서 검증은 우회하지만 보안 통신은 그대로 진행하기 때문에 별다른 문제는 없다. HTTPS 통신을 하며 사설인증서를 사용하고 그냥 통신을 하는 경우 SSLHandshakeException 오류가 발생한다. SSLHandshakeException 오류는 HTTPS 통신 시 서버 인증서와 관련해 발생하며 아래와 같은 이유로 발생할 수 있다. 1. 서버 인증서를 발급한 CA를 알 수 없는 경우 2. CA에서 서버 인증서에 서명한 것이 아니라 자체 서명되어있는 경우 3. 서버 구성에 중간 CA가 누락되어 있는 경우 자세한 설명은 아래 링크를 참고 ..

[안드로이드] 타 앱 호출하기 (Custom URL Scheme)

타 앱을 호출하는 방법 중 Custom URL Scheme 방식으로 호출하는 방법을 설명한다. 타 앱을 호출하는 앱을 Caller 앱, 호출되는 앱을 Callee 앱이라 한다. 1. Caller 앱 Caller 앱은 Callee 앱을 실행하며 데이터를 전달한다. 데이터 전달 받식은 scheme://host?query 형식이다. 테스크를 생성하지 않고 Callee 앱 호출 아래 코드로 앱을 호출하면 Caller 앱 내에서 Callee 앱을 호출한다. (Callee 앱의 테스크는 생성되지 않음) 앱 호출 후 메뉴 버튼을 눌러 앱 목록을 확인하면 Caller 앱만 존재한다. 1 2 3 4 5 6 7 String urlScheme ="callee://data?key1=value1&key2=value2"; Int..

반응형