【问题标题】:can't retrieve shared preference from other apps Android无法从其他 Android 应用中检索共享偏好
【发布时间】:2011-07-06 12:36:00
【问题描述】:

我已经读过可以从我的应用程序外部检索共享首选项,我的意思是如果我在 X 应用程序中保存一个首选项,我可以从 Y 应用程序中检索它,问题是,这对我不起作用,问题是怎么做?这是我的代码,我不知道我哪里出错了:

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);

但我只得到一个空对象,我做错了什么?我不是我的错误。

提前致谢。

【问题讨论】:

  • 你应该看看这里发布的答案:stackoverflow.com/questions/4787785/…
  • 变量MODE_PRIVATE 似乎没有在你脑海中敲响逻辑警钟?
  • 有趣的解决方案,但我需要在某处保存一个 id,即使在卸载创建此 id 的应用程序后,该 id 仍将保存。有什么想法吗?

标签: android


【解决方案1】:

其实我最近才在看这个,但最后并不需要它。

This 指南看起来不错。

【讨论】:

  • 该示例工作正常,但如果我卸载在 SharedPreferences 中设置数据的 SetData 项目并重新安装它,则数据将替换为默认数据,这不是我指定的。即使重新安装应用程序,我也希望数据保留在首选项中。但是感谢您的提示
  • 嗯?我对 SharedPreferences 和重新安装没有任何问题。你不是卸载然后重新安装,是吗?只需在当前安装的基础上重新安装即可。
  • 关于如何分享偏好的最佳示例。
【解决方案2】:

您使用的是MODE_PRIVATE 而不是MODE_WORLD_READABLE

公共抽象 SharedPreferences getSharedPreferences(字符串名称,int 模式)

[...] 模式 操作模式。使用 0 或 MODE_PRIVATE 为默认值 操作,MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 来控制 权限。位 MODE_MULTI_PROCESS 也可以使用,如果 多个进程正在改变 相同的 SharedPreferences 文件。 MODE_MULTI_PROCESS 始终在 针对 Gingerbread(Android 2.3) 及以下版本,后续版本默认关闭。

(getSharedPreferences)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2017-05-17
    • 2019-06-20
    • 2018-09-08
    相关资源
    最近更新 更多