Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t从其他Android应用程序检索共享首选项_Android - Fatal编程技术网

can';t从其他Android应用程序检索共享首选项

can';t从其他Android应用程序检索共享首选项,android,Android,我读到共享首选项可以从我的应用程序外部检索,我的意思是,如果我在X应用程序中保存首选项,我可以从Y应用程序中检索它,问题是,这对我不起作用,问题是如何做?这是我的代码,我不知道哪里出错了: final String APP = "Test"; final String USER_ID = "User Id"; String myId; SharedPreferences prefs = getSharedPreferences(APP, MOD

我读到共享首选项可以从我的应用程序外部检索,我的意思是,如果我在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);
但我只得到一个空对象,我做错了什么?我不认为我的父母犯了这个错误


提前谢谢。

我最近才看到这个,但最后并不需要它


指南看起来不错。

您使用的是
MODE\u PRIVATE
而不是
MODE\u WORLD\u READABLE

公共摘要共享引用 GetSharedReferences(字符串名,int 模式)

[…]模式操作模式。使用0 或默认情况下的模式_PRIVATE 操作、模式\u世界\u可读和 模式\u世界\u可写入控件 权限。钻头 如果出现以下情况,也可以使用模式\u多\u过程: 多个进程正在改变 相同的SharedReferences文件。 模式\u多\u进程始终处于启用状态 针对姜饼(Android)的应用程序 2.3)及以下,并在以后的版本中默认关闭


()

示例运行良好,但如果我卸载在SharedReferences中设置数据的SetData项目并重新安装,数据将被默认数据替换,这不是我指定的。我希望即使重新安装应用程序,数据仍保留在首选项中。但是谢谢你的酒嗯?我对SharedReference和重新安装没有问题。你不是先卸载然后再重新安装,是吗?只需在当前安装的基础上重新安装。这是关于如何共享首选项的最佳示例。您应该看看这里发布的答案:变量
MODE\u PRIVATE
似乎并没有在您的脑海中敲响逻辑铃?有趣的解决方案,但我需要的是在某个地方保存一个id,其中,即使在卸载创建此id的应用程序后,该id仍将保持保存状态。有什么想法吗?