两个应用程序间的数据共享

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

我对这个问题没有任何答案。 任何人都可以帮助我确定一个办法…

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

从应用程序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()); } 

在两个应用程序清单文件中添加相同的共享用户标识和标签

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

两者都是相同的…并且共享用户标签必须来自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"> 

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

其他select… Android特定 – 远程服务常规 – TCP / IP连接常规 – 写入SD卡上的位置

要多听一些具体的方法?

今天采访也偷这个问题:)

如果要在应用程序之间共享数据,请确保使用相同的密钥签名:

通过权限进行代码/数据共享 – Android系统提供基于签名的权限执行,以便应用程序可以将function展示给使用指定证书签名的另一个应用程序。 通过使用相同证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据。

这是从android开发者页面引用关于签名

如果是less量数据,则可以通过意向发送。

内容提供者是android组件,如果一个应用程序想要与其他应用程序共享数据,就必须使用它。

注意:由应用程序创build的文件,SqliteDatabases,Sharedpreference文件仅适用于该应用程序。 其他应用程序不能直接访问它。 如果程序员通过使用内容提供者来公开数据库,那么其他应用程序只能访问那些数据。 与内容提供者通信使用内容parsing器。