两个带共享UserID的应用

Ali*_*Ali 21 android

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

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

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

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

我搜索了很多,但找不到任何关于userId共享的例子.

Sta*_*kER 48

您可以android:sharedUserId在AndroidManifest.xml 中使用,让您的应用程序与另一个应用程序共享相同的用户ID.

机器人:sharedUserId

将与其他应用程序共享的Linux用户标识的名称.默认情况下,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">
Run Code Online (Sandbox Code Playgroud)

然后我们可以初始化一个新的上下文com.example:

Context friendContext = this.createPackageContext( "com.example",Context.CONTEXT_IGNORE_SECURITY);
Run Code Online (Sandbox Code Playgroud)

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

friendContext.getResources().getString(id);
friendContext.getResources().getDrawable(id);
friendContext.registerReceiver(...);
Run Code Online (Sandbox Code Playgroud)