2012-03-20 48 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

相關問題