Java 使用SharedReferences在两个应用程序之间共享数据

Java 使用SharedReferences在两个应用程序之间共享数据,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在两个我的应用程序之间共享数据,这是我从应用程序A中的共享pref获取数据的代码 try { final Context mContext = createPackageContext("com.example.demo", Context.MODE_PRIVATE); final String val = mContext.getSharedPreferences("pref_name",Context.MODE_PRIVATE).getString

我正在两个我的应用程序之间共享数据,这是我从应用程序A中的共享pref获取数据的代码

    try {
        final Context mContext = createPackageContext("com.example.demo", Context.MODE_PRIVATE);
        final String val = mContext.getSharedPreferences("pref_name",Context.MODE_PRIVATE).getString(MY_KEY,"");
        Log.e("sharedtest",val);
        finish();
    } catch (Exception e) {
        e.printStackTrace();
    }
这段代码在onCreate()方法中,我没有更多的代码。我的问题是,如果我在我的应用程序B中保存了某个值,然后启动我的应用程序A,则在第一次检索到数据后,正确检索到了保存的数据。我的活动正在结束(我只有一个活动),如果我启动启动程序图标并启动我的应用程序A,则没有更新的数据(相同),从appB更改


此外,如果我从系统应用程序设置中删除我的应用程序,并像第一次启动更新数据一样启动它,每次数据更改都需要从设置中删除我的应用程序,我如何修复它?我缺少什么?

我找到了解决方案这可能是一个技巧,但对我来说效果很好, 在我的应用程序A完成其工作后,我将调用系统退出方法

 System.exit(1); 
它使应用程序“A”退出并完全完成任务


在我的首选项中有了最新更新的数据之后,我找到了解决方案,这可能是一个技巧,但对我来说效果很好, 在我的应用程序A完成其工作后,我将调用系统退出方法

 System.exit(1); 
它使应用程序“A”退出并完全完成任务


在此之后,我的首选项中有了最新更新的数据

更正确的解决方案是使用内容提供商而不是使用共享引用。我只需要一个字符串,为什么不使用首选项?更正确的解决方案是使用内容提供商而不是使用共享引用。我只需要一个字符串,为什么不要使用首选项?Lol,使用
finish()
你不应该在Android环境下使用System.exit。正如Florescu所说,使用finish()我从服务中调用它,当服务运行时,活动已经停止,服务启动后,我从ActivityLol调用finish,使用
finish()
您不应该在Android环境中使用System.exit。正如Florescu所说,使用Finish()我从服务中调用它,当服务运行时,活动已经停止,服务启动后,我从活动中调用Finish