안녕하세요.
다른 app의 sharedPrefrence 참조하는 방법이 궁금하여 글 올립니다.
현재 제가 구현한 소스는 다음과 같습니다.
1번 App에서 생성한 sharedPreference의 값을 2번 App에서 참조하려고 하는 상태입니다.
1번 App(패키지명 : android.com.app.test1)
public static int getValue(Context context) {
SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context);
int value = shared .getInt("SETTING", 1);
Log(context, " 1 setting value : " + value);
return metric;
}
2번 App(패키지명 : android.com.app.test2)
private static SharedPreferences getValueSharedPreferences(Context context){
Context testContext;
try {
testContext = context.createPackageContext("android.com.app.test1", 0);
} catch (NameNotFoundException e) {
LOG.e("getWeatherSharedPreferences is null!!!!!!!");
return null;
}
SharedPreferences sharedPreferences = testContext.getSharedPreferences("android.com.app.test1_preferences", Context.MODE_WORLD_READABLE);
sharedPreferences.getInt("SETTING", 100);
Log(context, " 2 setting value : " + value);
}
1번 App에서 찍은 로그는 이렇습니다.
1 setting value : 0
그런데 2번 App에서 찍은 로그는...
2 setting value : 100
0을 기대했으나, default 값인 100이 찍히네요.
어디가 문제인가요?
고수님들 답변 부탁드립니다.




이런 게 가능한건 처음알았지만
관심이 생겨 찾아보니 이런 문제가 있을 수도 있단 생각이 드네요
createPackageContext()에 들어가는 플래그가 3개가 있는데,
CONTEXT_IGNORE_SECURITY
CONTEXT_INCLUDE_CODE
CONTEXT_RESTRICTED
근데 CONTEXT_IGNORE_SECURITY를 쓰면 되나봐요? 하지만 남용은 하지 말라고 당부하더라고요;