2010-08-21 5 views
3

기본 설정을 통해 특정 데이터를 공유하는 여러 응용 프로그램이 있습니다. 각 응용 프로그램은 PreferenceActitivity (xml에서)를 통해 기본 설정을 지정합니다. 두 가지 질문 :Android 기본 설정 응용 프로그램에서 MODE_WORLD_WRITEABLE 환경 설정을 생성하는 방법

다른 앱에서 한 앱이 만든 환경 설정을 사용하거나 수정하는 방법은 무엇입니까? PreferenceActivity를 사용하여 MODE_WORLD_WRITEABLE 환경 설정을 만드는 방법을 찾아 내면 문제가 해결됩니다. 내가 addPreferencesFromIntent (i)를 사용하여 어떻게 코드를 반환 {}

  • 둘째, 위

    SharedPreferences prefs = getSharedPreferences(
          <String referring to another package´s prefs>, MODE_WORLD_WRITEABLE); 
         HashMap<String, String> map = (HashMap<String, String>) prefs 
          .getAll(); 
    
    
         String str = map.toString(); 
         tv.setText(str); 
    

    - 내가 의도가 null가 아닌 경우에도 NullPointerException이 무엇입니까.

미리 도움을 주셔서 감사합니다.

최저

, 사미르

답변

6

는 매니페스트에서 같은 android:sharedUserId을 설정 안전한 방법으로 다른 응용 프로그램에서 기본 설정에 액세스합니다. 이렇게하면 MODE_PRIVATE (또는 보안) 방식으로 기본 설정 &에 액세스 할 수 있습니다. 많은 시간이 소비 한 후

, 우리는 작동하지 않습니다 혼자를 실현 한 두 번째 응용 프로그램의 파일에 액세스하는 첫 번째 응용 프로그램의 패키지 컨텍스트를 만들 필요가있다 :

try { 
      Context c = createPackageContext(com.app.first, MODE_PRIVATE); 
      SharedPreferences prefs = c.getSharedPreferences(
        "com.app.first_preferences", MODE_PRIVATE); 

     } catch (NameNotFoundException e) { 
      e.printStackTrace(); 
     } 

큰는 @CommonsWare에 감사합니다 도움을 청하기 위해 카르티크 샹 무간과

+0

하지만 앱이 이미 살아 있다면 sharedUserId를 추가 할 수 없습니다. 많은 것들이 엉망입니다. 단지 2 센트. – trgraglia

+0

이 솔루션의 단점은 두 번째 응용 프로그램이 첫 번째 응용 프로그램이 설치되어 있다고 가정해야한다는 것입니다. http://stackoverflow.com/q/11803585/722603을 참조하십시오. – ef2011

관련 문제