两个带共享UserID的应用

时间:2013-04-29 01:20:20

标签: android

具有共享UserID的两个应用程序可以访问彼此的资源,如drawables或字符串吗?

他们可以互相访问其他资产吗?

他们可以启用或禁用其他组件吗?

如果有可能,请说明必须如何进行。

我搜索了很多但找不到有关userId共享的任何示例。

1 个答案:

答案 0 :(得分:48)

您可以在AndroidManifest.xml中使用android:sharedUserId让您的应用与其他应用共享相同的用户ID。

<强>机器人:sharedUserId

  

将与其他人共享的Linux用户ID的名称   应用。默认情况下,Android会为每个应用程序分配自己的应用   唯一的用户ID。但是,如果将此属性设置为相同的值   对于两个或更多应用程序,它们将共享相同的ID -   只要它们也由同一证书签署。   具有相同用户ID的应用程序可以访问彼此的数据,如果   期望,在同一过程中运行。

请注意,他们需要使用相同的证书进行签名。

共享相同用户ID的两个应用程序可以访问彼此的资源。

例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.shareusertesta"
    android:versionCode="1"
    android:versionName="1.0" 
    android:sharedUserId="com.example">

然后我们可以通过:

初始化com.example的新上下文
Context friendContext = this.createPackageContext( "com.example",Context.CONTEXT_IGNORE_SECURITY);

访问该应用程序的一些资源:

friendContext.getResources().getString(id);
friendContext.getResources().getDrawable(id);
friendContext.registerReceiver(...);