使用sharedUserId访问其他应用的数据

时间:2013-03-21 12:37:11

标签: android

我有一个已经上市的应用程序,我们称之为“旧应用程序”。我想创建一个“新的应用程序”,它与旧的应用程序共享数据,我决定使用SharedID。

我更改了新应用的清单,添加了以下内容:

android:sharedUserId="com.myname.myoldapp"

com.myname.myoldapp是旧应用包的名称。但它不起作用。

如何使用新应用访问旧的应用数据? 更改旧应用程序的userId以匹配新应用程序的shareduserid显然不是一个选项,因为旧应用程序已经在线,所有更新它的用户都将丢失其个人数据。

PS:证书是一样的。

谢谢。

1 个答案:

答案 0 :(得分:5)

  

我有一个已经上市的应用程序,我们称之为“旧应用程序”。我想创建一个“新的应用程序”,它与旧的应用程序共享数据,我决定使用SharedID。

在不破坏所有现有装置的情况下,这将不再可能。

  

我更改了新应用的清单,添加了以下行:android:sharedUserId =“com.myname.myoldapp”   其中com.myname.myoldapp是旧应用程序包的名称。但它不起作用。

如果您阅读the documentation on android:sharedUserId,您会看到告诉您:“但是,如果此属性设置为相同值,则两个或更多应用程序将共享相同的ID“(强调我的)。由于您的旧应用没有android:sharedUserId,因此您无法将新应用设置为旧应用的android:sharedUserId值。

  

如何使用新应用访问旧的应用数据?

使用Service。或ContentProvider。或Android支持的任何其他形式的IPC。旧应用程序需要公开基于IPC的API,新应用程序可以使用该API来访问旧应用程序的数据。您可以使用自定义signature级别权限将这些API的访问权限仅限于您的应用。