Context.MODE_MULTI_PROCESS

이전 글에서 Shared Preferences를 통해 데이터를 교환하는 것은 좋지 않다고 했지만, 써야할 때가 있다.  이 때 다른 app에서 값을 분명이 바뀌었는데 읽혀지지 않는 경우가 발생한다.  그렇다고 Shared Preference를 읽어오는데 실패하지도 않았고. 이 때는 아래와 같이 context.getSharedPreferences(__SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS); MODE_MULTI_PROCESS를 넣도록하자. 이는 열려진 Shared Preference라도 수정사항이 발생하지 않았는지 읽어오기 전에 파일을 확인한다. 하지만, 역시 Shared […]

Context.MODE_MULTI_PROCESS 더 읽기"

내 Shared Preferences 파일은 어디에

Shared Preferences가 파일로 데이터를 저장하는 것이고, Android에서 이것을 쉽게 도와주는 것이라는 것은 모두 알 것이다.  그럼 어딘가에 저장되어 있다는 것인데, 이파일이 꼭꼭 숨겨져 있지 않고 찾기 쉬운 곳에 있다. 혹시 다른 app 간 통신에 Shared Preferences를 이용하고 있다면, 그 파일이 실제로 저장되었는지도 확인할 필요가 있다. 파일의 위치는 AndroidManifest.xml에 적힌 package 이름에 영향을 받는다. /data/data/[YOUR_PACKAGE_NAME]/shared_prefs/[YOUR_PACKAGE_NAME]_preferences.xml Default가

내 Shared Preferences 파일은 어디에 더 읽기"

어떤 keystore로 sign되었는지 확인하는 방법

my.debug.keystore와 my.keystore 2개를 만들면 편하다는 글을 썼었다. 그럼, my.debug.keystore를 이용해 sign된 상태일 때만, Log가 출력되도록 하는 것은 어떨까? 이 때 내가 어떤 keystore를 이용해 sign되었는지 판단하는 방법이 필요하다. 이를 확인하는 함수는 간단하다. 다음과 같다. private boolean isDebugMode() { if (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)) { return true; } else { return false; } }  

어떤 keystore로 sign되었는지 확인하는 방법 더 읽기"

debug용 keystore 만들기

Android는 keystore를 이용해 개발자 자신의 앱을 signing 한다. 그런데, 이미 1.0을 release했는데 업데이트가 잘 되는지 궁금 할때 처럼, 기존 자신의 app을 지우지 않은 채 설치(정확히는 update)를 하며 테스트를 해야할 때가 있다. 이때, 매번 export 메뉴를 이용해 내 keystore를 지정, signing을 하는 번거로운 작업을 반복 해야할까? 이 때는, debug용 keystore를 추가로 만들면 된다. Eclipse ADT를 이용해 개발할

debug용 keystore 만들기 더 읽기"

Android API 18에서 startForeground()

Android API 17까지는 서비스가 시스템에 의해 강제종료 되는 것을 막기 위해서 서비스 시작 부분에 startForeground()를 호출했다. 이번 Android API 18에서도 여전히 사용할 수 있지만 notification bar에 안내가 강제로 뜬다. 시스템 앱(/system/app, /system/framework, /vender 폴더에 있는 앱)의 경우에는 기존과 같이 notification bar에 안내가 뜨지 않고 죽지않는 서비스를 만드는 방법이 있다. Androidmanifest.xml 파일의 <Application 선언 부분에 android:persistent=”true” 를 선언하는 것이다.

Android API 18에서 startForeground() 더 읽기"