2011-03-01 89 views
2

我讀過,共享偏好可以從我的應用程序之外進行檢索,我的意思是,如果我保存X應用程序的偏好,我可以與Y應用檢索偏好的事情是,這對我來說不合適,問題是如何去做?這裏的是我的代碼,我不知道我哪裏錯了:無法檢索分享了Android的其他應用

final String APP = "Test"; 
     final String USER_ID = "User Id"; 
     String myId; 

     SharedPreferences prefs = getSharedPreferences(APP, MODE_PRIVATE); 

     if (prefs.getString(USER_ID, null) == null){ 
      if(phoneNumber != null){ 
       myId = phoneNumber; 
       prefs.edit().putString(USER_ID, myId).commit(); 
      } 
      if(deviceId != null){ 
       myId = deviceId; 
       prefs.edit().putString(USER_ID, myId).commit(); 
      }else{ 
       myId = randomId.toString(); 
       prefs.edit().putString(USER_ID, myId).commit(); 
      } 
     } 

然後我嘗試檢索從不同的應用程序這種偏好是這樣的:

final String APP = "Test"; 
     final String USER_ID = "User Id"; 

     SharedPreferences sp = getSharedPreferences(APP, MODE_PRIVATE); 
     String s = sp.getString(USER_ID, null); 

,但我只能得到一個空對象, 我做錯了什麼?我不是我的錯。

在此先感謝。

+4

變量'MODE_PRIVATE'似乎不響在你的腦袋邏輯鍾? – WarrenFaith 2011-03-01 13:40:16

+0

你應該在這裏張貼的答案一看:http://stackoverflow.com/questions/4787785/can-sharedpreferences-be-shared-among-different-android-applications – Sakaroz 2011-03-01 13:39:30

+0

有趣的解決方案,但我需要的是拯救一個id在某處,即使在創建此id的應用程序被卸載後,該id仍將保存。有任何想法嗎 ? – madcoderz 2011-03-01 14:18:13

回答

2

我其實只是最近在看這個,但最後並不需要它。

This引導看起來相當不錯。

+0

該示例工作正常,但如果我卸載SetData項目中設置SharedPreferences中的數據重新安裝它的數據被替換爲默認數據,這不是我的規範。即使應用程序重新安裝,我也希望數據保留在首選項中。但是,謝謝你的提示 – madcoderz 2011-03-01 14:07:16

+0

嗯?我對SharedPreferences沒有問題並重新安裝。你不是卸載然後重新安裝,是嗎?只需重新安裝在當前安裝的頂部。 – Klaus 2011-03-01 14:17:04

+0

有關如何分享偏好的最佳示例。 – JPM 2012-04-11 23:05:38

1

您正在使用的MODE_PRIVATE代替MODE_WORLD_READABLE

公共抽象SharedPreferences getSharedPreferences(字符串名稱,詮釋 模式)

[...] 模式操作模式。使用0 或MODE_PRIVATE默認 操作,MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE控制 權限。位 MODE_MULTI_PROCESS也可以如果 多個進程突變所述 相同SharedPreferences文件中使用。 MODE_MULTI_PROCESS總是在 應用靶向薑餅(Android的 2.3)和下面,並默認關閉在以後的版本。

getSharedPreferences

相關問題