如何在两个Application之间共享数据

时间:2017-07-12 10:56:14

标签: android sharedpreferences

我正在尝试使用SharePreferences在两个应用程序之间共享一些数据。 (如果我错误的方法,请告诉我在不同的应用程序之间发送数据的正确方法)。 我的代码是这样的: 在Application1(发件人)中:

frame1 = PhotoFrame(master)
frame1.title_label.configure(text='Frame 1')  # Along with any other configuration

在Application2(接收者)中:

 SharedPreferences prefs = getSharedPreferences("odenevisha.com.apps.test_01",
      Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("DATA", "123");
    editor.apply();

在两个应用程序的清单中,我在下面的行中定义了Tag:

   try {
      Context con = createPackageContext("codenevisha.com.apps.test_01", 0);//first app package name is "codenevisha.com.apps.test_01"
      SharedPreferences pref = con.getSharedPreferences(
        "demopref", Context.MODE_PRIVATE);
      String your_data = pref.getString("DATA", "No Value");
      Log.e("LOGO", "TEXT IS: " + your_data);

    }
    catch (PackageManager.NameNotFoundException e) {
      Log.e("LOGO", e.toString());
    }

但它不起作用! 问题是什么?

4 个答案:

答案 0 :(得分:2)

您可以使用内容提供商。这里是detailexample

enter image description here

答案 1 :(得分:1)

您还可以使用AIDL在Android中的两个应用程序之间共享内容。 https://developer.android.com/guide/components/aidl.html

答案 2 :(得分:0)

您应该使用ContentProviders

  

内容提供商可以帮助应用程序管理对自己存储的数据的访问,由其他应用程序存储,并提供与其他应用程序共享数据的方式。它们封装数据并提供定义数据安全性的机制。内容提供程序是将一个进程中的数据与另一个进程中运行的代码连接起来的标准接口。实现内容提供商具有许多优点。最重要的是,您可以配置内容提供商以允许其他应用程序安全地访问和修改您的应用数据

如果您想使用SharePreferences,则必须使用相同的密钥对应用进行签名

答案 3 :(得分:0)

尝试更改为世界可读:

SharedPreferences prefs = getSharedPreferences("odenevisha.com.apps.test_01",
  Context.MODE_WORLD_READABLE);

https://stackoverflow.com/a/11949750/7890950