2011-04-21 95 views
30

最近我接受了一个采访,其中问题被问及“你将如何在两个已安装的应用程序或apk之间共享数据?两个应用程序之间的数据共享

我对这个问题没有任何答案。任何人都可以帮助我确定这样做的方法...

回答

22

ContentProviders是在应用程序之间共享数据的好方法。

+2

感谢您的链接。很抱歉,请问,但您能否更具体地了解如何共享数据。任何示例都将非常有帮助 – 2011-04-21 14:18:04

+0

[这是一个很好的简单示例](http://marakana.com/forums/android/examples/64.html),使用适用于所有应用程序的系统数据源。 [下载示例](http://marakana.com/static/tutorials/ContentUserDemo.zip) – 2013-06-06 15:51:53

+0

@BradParks链接已经死了 – 2016-02-25 05:47:15

4

我怀疑他们可能正在寻找Android的具体方法,如内容提供商的答案。

其他的办法 Android的具体 - 远程服务 常规 - TCP/IP连接 一般 - 写入的位置SD卡

护理上听到更多的具体方法?

今天还偷了这个问题的采访:)

0

内容提供商是Android组件,其中有如果应用程序要与其他应用共享其数据使用。

注意:由应用程序创建的文件,SqliteDatabases,Sharedpreference文件仅对该应用程序是私有的。其他应用程序无法直接访问它。如果程序员通过使用内容提供者公开数据库,那么其他应用程序只能访问该数据。与内容提供者通信使用内容解析器。

4

如果你想在应用程序之间共享数据,请确保您使用相同的密钥登录:

代码/数据通过权限共享 - Android系统提供 基于签名的权限执行,这样应用程序可以 将功能公开给另一个使用 指定证书签名的应用程序。通过使用相同的 证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据。 android developer page about signing

如果它的数据量小,你可以通过一个意图发送:

这是从引用。

+0

你能指出如何从一个应用程序获取或检索数据到另一个?该链接更多的是关于签名。 – 2016-05-05 14:57:00

16

从应用程序1发送数据(例如:应用程序1的包名称是“com.sharedpref1”)。

SharedPreferences prefs = getSharedPreferences("demopref", 
        Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putString("demostring", strShareValue); 
      editor.commit(); 

接收在应用程序2(以获得在应用例1从共享偏好数据)中的数据。

try { 
      con = createPackageContext("com.sharedpref1", 0);//first app package name is "com.sharedpref1" 
      SharedPreferences pref = con.getSharedPreferences(
         "demopref", Context.MODE_PRIVATE); 
      String your_data = pref.getString("demostring", "No Value"); 
     } 
    catch (NameNotFoundException e) { 
       Log.e("Not data shared", e.toString()); 
     } 

在这两个应用程序清单文件添加共用同一用户ID &标签,

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

都是一样的... ...和共享用户标签从字符串必须。xml

就像这个例子。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.xxxx" 
android:versionCode="1" 
android:versionName="1.0" 
android:sharedUserId="any string" 
android:sharedUserLabel="@string/any_string"> 
+6

您是否也必须使用相同的密钥签署应用程序? – John 2015-08-31 18:34:36

+1

非常好解释。它的工作。谢谢哥们 :-) – 2017-07-05 05:29:58

相关问题