2013-04-29 66 views
17

可以使用共享UserID的兩個應用程序訪問像drawables或字符串的其他資源嗎?有共享UserID的兩個應用程序

他們可以訪問彼此的資產嗎?

他們可以啓用或禁用其他組件嗎?

如果有這些可能,請說明如何完成。

我搜索了很多,但找不到任何關於userId共享的例子。

+0

重複: //stackoverflow.com/questions/9783765/what-is-shareduserid-in-androidhow-can-i-used-shareduserid – bleater 2013-11-04 23:42:16

回答

43

您可以在AndroidManifest.xml中使用android:sharedUserId讓您的應用程序與另一個應用程序共享相同的用戶標識。

機器人:sharedUserId

,將與其他 應用程序共享的一個Linux用戶ID的名稱。默認情況下,Android會爲每個應用程序分配自己的 唯一用戶標識。但是,如果對於兩個或更多應用程序將此屬性設置爲相同的值 ,則它們將共享相同的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); 

,並訪問應用程序的一些資源:

HTTP的
friendContext.getResources().getString(id); 
friendContext.getResources().getDrawable(id); 
friendContext.registerReceiver(...); 
+0

我得到'android.content.pm.PackageManager $ NameNotFoundException:未找到應用程序包com.example'。你的意思是全包名嗎? – coyer 2016-11-28 09:51:41

相關問題