无法通过活动获取SharedPreferences

Gro*_*sha 0 android sharedpreferences

对不起,我的英语不好.
在我的应用程序中,我在共享首选项中保存令牌(它是一个Web应用程序).在第一个活动中,我这样做:

(token = 123)
SharedPreferences sp = getPreferences(MODE_PRIVATE);
Editor ed = sp.edit();
ed.putString("token", Main.getToken()); 
ed.commit();
Log.d("Recieved token: ", sp.getString("token", "null")); // Recieved token: 123
Run Code Online (Sandbox Code Playgroud)

如您所见,共享首选项已保存.
我有另一个活动,可以从浏览器调用以共享链接.
码:

sp = getPreferences(MODE_PRIVATE);
Log.d("Token recieved: ", sp.getString("token", "null")); // null
Run Code Online (Sandbox Code Playgroud)

但是在另一个活动上共享的prefs返回null.我能做什么?

Nig*_*elK 7

解释为什么getPreferences()不适合你:

当您在未指定共享首选项名称的情况下调用getPreferences()时,它将使用调用Activity的类名作为共享首选项名称返回共享首选项.这就是你在其他活动中获得null的原因 - 它实际上是你所指的不同的共享首选项集.

使用getSharedPreferences,使用您喜欢的任何首选项名称:

getSharedPreferences("my_prefs", Activity.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

然后,这将在整个申请中提供.但是,如果您不需要引用存储在特定Activity之外的数据,则使用getPreferences()是合适的.