22

具有共享 UserID 的两个应用程序可以访问其他资源,如可绘制对象或字符串吗?

他们可以访问彼此的资产吗?

他们可以启用或禁用另一个组件吗?

如果其中任何一个是可能的,请解释它必须如何完成。

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

4

1 回答 1

49

您可以android:sharedUserId在 AndroidManifest.xml 中使用,让您的应用程序与另一个应用程序共享相同的用户 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(...);
于 2013-04-29T02:44:35.263 回答