代码之家  ›  专栏  ›  技术社区  ›  Ehsan

如何在两个应用程序之间共享数据

  •  1
  • Ehsan  · 技术社区  · 8 年前

    我正在尝试使用SharePreferences在两个应用程序之间共享一些数据。 (如果我走错了路,请告诉我在不同应用程序之间发送数据的正确方法)。 我的代码如下:

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

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

    在这两个应用程序的清单中,我在标记中定义了以下行:

       android:sharedUserId="any string"
       android:sharedUserLabel="@string/label"
    

    问题是什么?

    4 回复  |  直到 8 年前
        1
  •  2
  •   Sanket Kachhela    8 年前

    你可以使用内容提供商。这是 detail example

    enter image description here

        2
  •  1
  •   MuM6oJuM6o    7 年前

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

        3
  •  0
  •   humazed    8 年前

    ContentProviders

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

    如果你想使用SharePreferences,你也必须使用相同的密钥对应用程序进行签名

        4
  •  0
  •   paursand    8 年前

    尝试更改为世界可读:

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

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