반응형

IT/안드로이드+JAVA 178

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

[안드로이드] 안드로이드 스튜디오 그래들 업데이트

안드로이드 스튜디오 그래들 업데이트 방법 android studio update gradle 참고 링크 https://stackoverflow.com/questions/17727645/how-to-update-gradle-in-android-studio How to update gradle in android studio? I installed Android Studio 0.1.9. Today I got and update to version 0.2 and of course I updated. After the installation I restarted Android Studio but now I get this message: Project is using a... stackoverflow.com

[안드로이드] 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] 전위 연산자, 후위 연산자, ++, --

[연산자] 전위 연산자, 후위 연산자, ++, -- 단항 연산자 중에서 증감 연산자 ++, -- 가 있고 변수 앞에 붙이면 전치 증감 연산자(++i,--i)라고 하고 변수 뒤에 붙이면 후위 증감 연산자(i++,i--)라고 한다. * 전위 증감 연산자는 실행문에서 값이 먼저 증가/감소해서 적용된다. 1. int i = 1;2. int j = ++i;j = 2, i = 2 가 된다. * 후위 증감 연산자는 실행문에서 값이 후에 증가/감소해서 적용된다. 1. int i = 1;2. int j = i++;j = 1, i = 2 가 된다. 보통 for문에 자주 사용하고 전위, 후위 연산자 모두 같은 결과를 나타내지만 내부적으로 동작 원리가 다르다. * 전위 증감 연산자 (++i, --i)1. i = i + 1;2..

[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);..

[안드로이드] 버튼 터치 시 EditText inputType 바꾸기

[안드로이드] 버튼 터치 시 EditText inputType 바꾸기 (비밀번호 형식 보이기/숨기기) public class MainActivity extends AppCompatActivity { EditText et; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.et); btn = (Button)findViewById(R.id.btn); btn.setOnTouchListener(new View.OnTouchListene..

[안드로이드] 앱 난독화

[안드로이드] 난독화 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..

반응형