반응형

Android 142

[안드로이드] 앱 내 다크 모드 비활성화

삼성 최신 폰을 보면 다크 모드라고 어두운 테마를 제공한다. 다크 모드로 개발된 앱을 실행시키면 흰색 배경이 검은색 배경으로, 흰색 텍스트가 검은색 텍스트로 변경되는 등의 문제를 발견할 수 있다. 핸드폰에서 다크모드를 설정해두었더라도, 앱에서는 다크 모드를 비활성화할 수 있다. (다크 모드 on/off 상관없이 동일하게 표시함) Application 클래스 onCreate에 아래 코드를 추가하면 된다. 아래 코드를 추가하면 앱의 모든 화면에서 다크 모드가 비활성화된다. 1 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) cs launcher activity에 적용하면, launcher activity가 두 번 실행되는 문제가 ..

[안드로이드] getIntent 데이터 삭제하기

A앱에서 Intent로 값을 전달하며 B앱을 오픈한 경우, B앱을 종료한 후에 앱 목록에서 B앱을 선택해 다시 실행시키면 getIntent에 전달받은 값이 그대로 있는 문제가 발생한다. 테스트 순서 1. A앱에서 Intent로 값 전달하며 B앱 오픈 2. B앱에서 getIntent().getData()로 데이터 전달받아 작업 진행 후 앱 종료 3. 메뉴 키(softkey) 눌러서 나타나는 앱 목록 중 B앱 눌러서 실행 4. B앱 실행되며 getIntent().getData() 확인 시 1번에서 전달받은 데이터가 그대로 있음 해결 방법 onCreate에 아래 코드로 추가하여 해결이 가능하다 1 2 3 if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED..

[안드로이드+JAVA] 지정한 수 만큼 문자열 잘라서 출력하기

지정한 수 만큼 문자열 잘라서 출력하기 문자열 길이와 반복 횟수를 구한 후 substring을 사용하여 출력 android string api : developer.android.com/reference/java/lang/String 1 2 3 4 5 6 7 8 9 10 11 12 String word = "1234567890a1234567890b1234567890c1234567890d"; int cut = 10; // 문자열 자를 문자 수 int len = word.length(); // 문자열 총 길이 int repeat = len / cut; // 반복 횟수 String leftWord = word; // 자르고 남은 문자열 while (0

[Git] 기본 명령어 및 사용 방법

Android Studio 기준으로 설명 1. 빈 저장소 생성 git init -> 프로젝트 폴더에 .git 폴더가 생성됨 2. 이름과 이메일 등록 (이전에 등록한 적이 있다면 패스) git config --global user.name "name" git config --global user.email "email" 3. 파일 상태 확인 git status 4. index에 파일 추가 git add -A 5. commit git commit -m "설명" 6. 로그 확인 일반 로그 확인 git log 시각화된 로그 확인 git log --graph --all --decorate 7. 예전 상태로 돌아가기 git log에서 확인한 commit 뒤의 일련번호를 사용 (일련번호를 처음부터 끝까지 입력하지 않..

IT/팁 2020.09.04

[안드로이드] FCM(Firebase Cloud Messaging) 사용하기 예제

[안드로이드] FCM 사용하기 예제 FCM은 Firebase를 사용해서 푸시메시지를 보내는 방법입니다. 예전에는 GCM을 많이 사용했다고 하는데, 현재는 간단하고 편리하다는 등의 이유로 FMC을 많이 사용한다고합니다. 1. Firebase 콘솔로 이동 후 프로젝트 생성합니다. https://console.firebase.google.com/ 프로젝트 이름을 입력합니다. 2. 프로젝트 패키지 이름을 입력합니다. 3. 앱 등록하면 google-services.json 파일을 다운받을 수 있습니다. 안드로이드스튜디오에서 프로젝트를 엽니다. 상단 왼쪽 목록에서 'Project Files' 로 선택 후 app 폴더에 .json 파일을 복사해줍니다. 정상적으로 복사했다면 아래의 구조처럼 .json 파일이 들어가있을..

[안드로이드] 네트워크 연결 확인

[안드로이드] 네트워크 연결 확인 안드로이드에서 네트워크 연결하는 방법이다.연결된 네트워크 종류도 알 수 있다. ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); if (activeNetwork != null) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI && activeNetwork.isConnectedOrConnecting()) { // wifi 연결중 } else if (activeNetwork.getType..

[안드로이드] 다음 카카오 지도 api 사용하기 (Kakao Map Api)

[안드로이드] 다음 지도 api 사용하기 (Kakao Map Api) 안드로이드에서 다음 카카오 지도 api를 사용해서 맵을 띄우는 예제입니다. 1. 카카오 개발자 플랫폼에 들어가서 로그인합니다. 링크 : https://developers.kakao.com 2. 내 애플리케이션 > '앱 만들기' 선택 3. 프로젝트 이름과 앱을 추가한 후 '앱 만들기' 선택 (아이콘은 안넣으면 기본 이미지로 들어갑니다) 4. 애플리케이션이 생성되면서 키 4가지를 줍니다. 5. 내 애플리케이션 > 설정 > 일반 > '플랫폼 추가' > Android 선택 후 '추가' 6. 패키지명을 입력합니다. (패키지명만 입력하면 마켓URL은 자동으로 입력됩니다. 만약 자동으로 입력이 안된다면 입력하시구요!) 7. 키 해시 값을 입력합니다..

[JAVA] synchronized

[JAVA] synchronized 자바 애플리케이션이 수행되면 서버나 WAS에 프로세스가 생성된다. 그리고 하나의 프로세스에는 하나이상의 Thread(스레드)가 생성된다. 단일 스레드가 생성되었다가 종료될 수도 있고 여러개의 스레드가 생성되고 수행되다가 소멸될 수도 있다. 즉 1대多의 관계다. 스레드는 WAS가 관리하며 시스템 개발시에 스레드를 개발자가 직접 컨트롤하는 일은 별로 없으며, 오히려 제대로 알지 못한 상태에서 직접 제어하면 서비스의 안전성에 문제가 생길 수도 있으니 어떤 원리로 작동되는지 정도만 알아도 충분하다고 본다. 스레드는 같은 프로세스내에서 동일한 데이터를 공유한다. 따라서 하나의 데이터에 대해서 동시에 여러개의 스레드가 접근이 가능하게 되고 그에 따라 데이터의 일관성에 관한 문제가..

[안드로이드] CountDownTimer

[안드로이드] CountDownTimer 예제 //(총 시간, Tick 시간) CountDownTimer timer = new CountDownTimer(5000, 1000) { public void onTick(long millisUntilFinished) { //1초에 한번씩 5번 실행되는 메소드 } public void onFinish() { //마지막 5번째가 실행이 되고 실행되는 메소드 } }.start();CountDownTimer(총 시간, Tick 시간)onTick 메소드가 1초에 한번씩 5번이 실행되고, 마지막으로 onFinish() 메서드를 호출한다. timer.cancel();타이머 종료하는 메서드

[안드로이드] 클립보드에 복사하기

[안드로이드] 클립보드에 복사하기 EditText를 터치하면 EditText에 있는 텍스트가 클립보드에 복사됩니다. public class MainActivity extends AppCompatActivity { ClipboardManager clipboardManager; ClipData clipData; EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);..

[안드로이드] 앱 난독화

[안드로이드] 난독화 build.gradle (Module: app) 에서 수정해주면 된다. 기본적으로 들어가면buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }이렇게 되어 있는데 minifyEnabled 를 true로 바꿔주면 끝이다.release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug 모드로 테스트해보려면 release를 복사해서 debug 로 바꾸고 테스트하면 된..

[안드로이드] 이메일 intent, Email intent

[안드로이드] 이메일 intent, Email intent Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("plain/text");String[] address = {"1234@naver.com"}; //이메일 주소 입력intent.putExtra(Intent.EXTRA_EMAIL, address);intent.putExtra(Intent.EXTRA_SUVJECT, "제목 입력");intent.putExtra(Intent.EXTRA_TEXT, "본문 내용");intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/mnt/sdcard/image.jpg")); //파일 첨부startActivity(int..

[안드로이드] 스피너 텍스트 색 (Spinner Text Color)

[안드로이드] 스피너 텍스트 색 ((TextView)adapterView.getChildAt(0)).setTextColor(Color.WHITE); 추가해주면 된다~ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int i, long l) { //텍스트 색 흰색으로 바꿔주기 ((TextView)adapterView.getChildAt(0)).setTextColor(Color.WHITE); } @Override public void onNothingSelected(AdapterView a..

반응형