【发布时间】:2013-04-22 14:33:03
【问题描述】:
具有共享 UserID 的两个应用可以相互访问其他资源,例如可绘制对象或字符串吗?
他们可以访问彼此的资产吗?
他们可以启用或禁用对方的组件吗?
如果其中任何一种可能,请说明必须如何完成。
我搜索了很多,但找不到任何有关 userId 共享的示例。
【问题讨论】:
标签: android
具有共享 UserID 的两个应用可以相互访问其他资源,例如可绘制对象或字符串吗?
他们可以访问彼此的资产吗?
他们可以启用或禁用对方的组件吗?
如果其中任何一种可能,请说明必须如何完成。
我搜索了很多,但找不到任何有关 userId 共享的示例。
【问题讨论】:
标签: android
您可以在 AndroidManifest.xml 中使用android:sharedUserId 让您的应用程序与另一个应用程序共享相同的用户 ID。
android: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(...);
【讨论】:
android.content.pm.PackageManager$NameNotFoundException: Application package com.example not found。你是说完整的包名吗?