Shared Preferences가 파일로 데이터를 저장하는 것이고, Android에서 이것을 쉽게 도와주는 것이라는 것은 모두 알 것이다. 그럼 어딘가에 저장되어 있다는 것인데, 이파일이 꼭꼭 숨겨져 있지 않고 찾기 쉬운 곳에 있다.
혹시 다른 app 간 통신에 Shared Preferences를 이용하고 있다면, 그 파일이 실제로 저장되었는지도 확인할 필요가 있다. 파일의 위치는 AndroidManifest.xml에 적힌 package 이름에 영향을 받는다.
/data/data/[YOUR_PACKAGE_NAME]/shared_prefs/[YOUR_PACKAGE_NAME]_preferences.xml
Default가 아닌 Preferences들도 같은 폴더에 저장되어 있다. 이에 대한 스택오버플로우에 올라온 좋은 답은 여기에!
하지만, Android에서는 World Readable로 선언된 Preferences 사용을 권장하지 않는다. 이유는, 어떤 app이나 접근할 수 있고 위에 말한 것처럼 파일의 위치도 노출되어 있기 때문이다. Preferences를 통해 데이터를 공유하는 경우에는, 모든 app에서 읽어가도 무방한 것만 공유하자.
아니라면, Intent, AIDL등의 방법을 사용하는 것이 옳다.
참고로 꼭 써야한다면? Lint를 이용한 검증 때, 잡히지 않도록 @SuppressLint(“WorldReadableFiles”) 를 method나 class에 붙여주면 warning을 보지 않을 수 있다.