2012-03-20 44 views

回答

29

SharedUserId用于共享数据,两个或多个应用程序之间的处理等。 它在AndroidManifest.xml等定义,

manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    android:sharedUserId="android.uid.shared" 
android:sharedUserLabel="@string/sharedUserLabel" 

和限定在Android.mk共享参数该应用一样,

LOCAL_CERTIFICATE:=共享

希望对您有所帮助..

+3

如何修改Android.mk?我还没有看到任何引用它通知我们该文件是什么... – 2014-01-01 23:44:30

+3

@IgorGanapolsky Android.mk是Android NDK(C/C++)的生成文件。 如果您的应用只使用Java,则您没有。 – Hartok 2015-01-13 15:06:30

+3

这是不正确的。对于将作为AOSP一部分构建的所有应用程序,此文件是必需的。包括java只有一个。 – RocketRandom 2016-06-15 10:21:49

28

默认情况下,Android会将用户标识分配给应用程序。它是您的应用程序的唯一ID,意味着除具有此ID的用户之外没有人可以访问您的应用程序的资源。您无法访问其他应用程序的数据或在当前进程中运行它。当一个活动中,另一个应用程序的活动被调用时,android将控件传递给新调用的活动,并且它们在完全不同的进程中运行。

但是,在您的清单文件中,您可以明确标识您的应用程序的用户标识。当您为多个应用程序声明相同的用户标识时,他们可以访问彼此的资源(数据字段,视图等)。您可以显示来自其他应用程序的数据或在您的过程中运行它。

这是你如何使用它:从 http://developer.android.com/guide/topics/manifest/manifest-element.html

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="string" 
    android:sharedUserId="string" 
    android:sharedUserLabel="string resource" 
    android:versionCode="integer" 
    android:versionName="string" 
    android:installLocation=["auto" | "internalOnly" | "preferExternal"] > 
    . . .</manifest> 
+32

重要的addi重要的是,你只能安装两个具有相同shareduserid的应用程序,这两个应用程序都使用相同的证书进行签名。 – njzk2 2012-03-20 09:25:48

+1

有多少应用程序可以在设备中拥有相同的sharedUserId?如果我在设备中有五个具有相同userId的应用程序,它们在同一进程中运行时是否会影响应用程序的性能? – pyus13 2013-07-08 20:30:31

+1

@ pyus13我不相信他们被迫在同一个过程中运行。如果你想这样做,那只是一个选择。 – 2014-04-16 02:27:27

相关问题