2013-06-26 4 views
1

Я использую getDefaultSharedPreferences(con) в своем приложении для сохранения настроек. Теперь я хочу получить доступ к этим общим предпочтениям в другом приложении. Я использовал следующий метод:доступ к sharedpreference для приложений

con = this.createPackageContext("com.example.preferences", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); 
SharedPreferences filePref = PreferenceManager.getDefaultSharedPreferences(con); 
      if(filePref != null){ 
       Toast.makeText(getApplicationContext(), "file pref not null --- ", Toast.LENGTH_LONG).show(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "file pref is null **** ", Toast.LENGTH_LONG).show(); 
      } 
      Map<String,?> allkeys = filePref.getAll(); 
      Toast.makeText(getApplicationContext(), "file pref size **** "+allkeys.size(), Toast.LENGTH_LONG).show(); 
      for(Map.Entry<String,?> entry : allkeys.entrySet()){ 
       Toast.makeText(getApplicationContext(), "~~~ file pref --- map values --- "+entry.getKey() + ": "+entry.getValue().toString(), Toast.LENGTH_LONG).show(); 
      } 

Другой способ, который пытался это указать имя файла & доступа к нему, как следует;

SharedPreferences filePref = gvcon.getSharedPreferences("com.example.preferences_preferences", Context.MODE_PRIVATE); 

С помощью этого метода я могу получить доступ к SharedPrefernce файл, он возвращает файл не пуст, но когда я проверить размер файла он показывает 0. Я не могу прочитать значение предпочтения из файла. Я использовал shareduserid другого приложения, чтобы получить полный доступ к этому приложению. Каков правильный способ этого?

+0

взглянуть при этом ответе http://stackoverflow.com/a/13236870/1936366 и это http://stackoverflow.com/questions/6030321/android-retrieving-shared-preferences-of-other-application –

ответ

0

Я не уверен, что полностью понял вашу проблему, но иногда эта реализация поможет вам получить доступ к данным через пакеты. Использование getSharedPreferences() для хранения данных в общих настройках

Этот метод будет хранить данные в общих настройках

public void dataWriter(){ 
    String strShareValue = "Hello! this is shared data"; 
    SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_WORLD_READABLE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putString("demostring", strShareValue); 
    editor.commit(); 
} 

Вы можете получить доступ, что общие данные из другого пакета, используя этот образец кода

public void dataRead(){ 
Context con; 
    try { 
     con = createPackageContext("PACKAGE NAME THAT SHARES DATA", 0); 
     SharedPreferences pref = con.getSharedPreferences("demopref", Context.MODE_PRIVATE); 
     String dataShared = pref.getString("demostring", "No Value"); 
     } 
    catch (NameNotFoundException e) { 
     Log.e("Not data shared", e.toString()); 
     } 
    } 
} 
+1

Спасибо за Ваш ответ. Моя проблема заключается в том, когда sharedpreferences создаются без указания имени, но с использованием метода по умолчанию, то есть с использованием prefernceactivity & хранятся в /data/data/packagename_preference.xml. В этом случае я не могу прочитать значение предпочтения из XML-файла. – Namrata