具有共享UserID的两个应用程序可以访问彼此的资源,如drawables或字符串吗?
他们可以互相访问其他资产吗?
他们可以启用或禁用其他组件吗?
如果有可能,请说明必须如何进行。
我搜索了很多但找不到有关userId共享的任何示例。
答案 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(...);