전체 글 322

구글 Analytics context와 ApplicationContext ....

구글 아날리틱스를 사용하면 기본적으로 아래 코드가 들어 가야 한다. AnalyticsApplication application = (AnalyticsApplication) context.getApplicationContext(); 하지만 context.getApplicationContext() 가 아니라 context 또는 this 등을 넣으면 java.lang.ClassCastException: cannot be cast to com.xxxx.AnalyticsApplication 이놈을 만나게 된다.. 당연한 얘기지만.... context와 ApplicationContext는 항상 구분해서 잘 쓰도록 하자. Service에서 SharedPreference 사용하기(context와 getApplicati..

안드로이드에서 Super를 쓰지 않으면? Wrong state class -- expecting Preference State

갑자기 아래와 같은 에러가 뜬다면,java.lang.IllegalArgumentException: Wrong state class -- expecting Preference State 아무리... 코드를 봐도... 구글링을 해봐도.... 나에게 맞는 처방전을 쉽게 찾기가 거의 불가능에 가깝다.... 원인 조차도..... 1. preference XML 에 같은 ID를 쓰는 놈이 있는지 찾아본다.2. 동적 코드에서도 같은 ID를 쓰는 놈이 있는지 찾아본다. 여기까지 해서 해결이 안되면,3. onResume() 을 체크 해본다.4. 되도록 onResume()에서 refresh()를 구현 해준다. --> final ListPreference key = (ListPreference) findPreference(..

[안드로이드 스튜디오] avd 패스 설정하기

1G 넘는 avd를 여러 개 만들다 보니 디스크 공간 부족 알림이 뜬다.C: 드라이버에 avd가 생성되어 생긴 현상이다.공간이 넓은 D: 드라이버에 avd를 생성하고 싶어 방법을 찾아보았다. 1. ADNROID_AVD_HOME을 윈도우 환경변수에 지정했다. -> avd 생성은 되나 실행할 때 에러 발생한다. 2. ANDROID_SDK_HOME을 지정해 보았다.윈도우 환경변수에서 ANDROID_SDK_HOME 을 D:\Android\sdk 로 지정해 주었다.avd 매니저로 avd 만들어 보니 $ANDROID_SDK_HOME/.android/avd 폴더 아래에 avd가 생성되는 게 확인된다.(1. 에서 지정했던 ANDROID_AVD_HOME 환경변수는 삭제했다.)-> 문제 해결. 이제 C: 드라이버 공간부족..

[로그 자동화] 안드로이드 디버그 팁

클래스 마다 태그를 넣고 쓰지 말고, 한 곳에서 로그를 관리하도록 하면 편하다. 아래 처럼 Log 클래스를 따로 만들고 필요 한 곳에서 LOG_TAG 함수를 부르면 알아서 클래스 명까지 딱 찍어준다. public static String LOG_TAG = ""; public static String LOG_TAG(Context context){ LOG_TAG = ""; return LOG_TAG = "[" + context.getClass().getSimpleName() + "] "; } 그리고, 디버그 모드 일때만 사용하도록 자동화 시켜 놓자. public static final boolean LOGIF = BuildConfig.DEBUG ? true : false; 결국 이렇게 불러서 쓰면 if(Lo..

[안드로이드 스튜디오] 패키지명 변경시 에러 발생 주의

안드로이드 스튜디오에서 패키지명 변경을 하다가, 갑자기 manifest에 빨간불이 들어 올 수도 있다.기본적으로 패키지명 변경은 좌측 메뉴의 Package 또는 mafifest에서 com.comostudio.xxx를 블럭한 뒤 refactor 하면 된다. 하지만, 일반 소스에서 찾아서 변경하기를 할 경우 갑자기 아래와 같은 에러를 만나게 되니 주의 바람. uri is not registered (settings project settings schemas and dtds) attri android:icon not allowed here 인터넷 검색을 아무리 해봐도 setting에서 위와 같이 추가 해주란 말 밖에 찾을 수 없다... 분명히 잘 되던 소스였는데 갑자기 매니페스트에 대부분이 빨간 불이라면 저..

안드로이드 노티피케이션 여러줄 생성

안드로이드 4.1 젤리빈 이후 부터는 노티피케이션이 할 수 있는 일이 정말 많아졌으며, 사용하기 쉽게 변했다. 여러줄을 생성 할 수도 있는데, 아래와 같이 하면 된다. bigText()에 긴 텍스트를 넣어주면 된다. mBuilder = new Notification.Builder(mContext); mBuilder.setSmallIcon(R.mipmap.ic_launcher); mBuilder.setAutoCancel(false); mBuilder.setContentTitle(title); mBuilder.setStyle(new Notification.BigTextStyle().bigText(big)); mBuilder.setContentIntent(PIntent); mBuilder.setDefaults..

안드로이드 노티피케이션 지우지 않기(고정), Led 출력하기

노티 영역에서 지우기를 해도 남아있게 하기mNotification.flags = Notification.FLAG_NO_CLEAR; 노티가 왔을 때 LED로 알려주기mNotification.defaults = Notification.DEFAULT_LIGHTS;Led 대신DEFAULT_SOUND, DEFAULT_VIBRATE 을 설정 할 수도 있다. 사용자 설정 LED 값mNotification.ledARGB = Color.GREEN; mNotification.ledOnMS = 4000; mNotification.ledOffMS = 1000;mNotification.flags |= Notification.FLAG_SHOW_LIGHTS;