2013-04-29 13 views
17

Czy dwie aplikacje ze współużytkowanym identyfikatorem użytkownika mogą uzyskiwać dostęp do zasobów takich jak rysunki lub ciągi?Dwie aplikacje ze współużytkowanym identyfikatorem użytkownika

Czy mogą uzyskać dostęp do zasobów?

Czy mogą włączać lub wyłączać komponenty innego?

Jeśli którykolwiek z nich jest możliwy, proszę wyjaśnić, jak to zrobić.

Szukałem dużo, ale nie mogłem znaleźć żadnego przykładu na temat udostępniania userId.

+0

duplikat http: //stackoverflow.com/questions/9783765/what-is-shareduserid-in-androidhow-can-i-used-shareduserid – bleater

Odpowiedz

43

Możesz użyć android:sharedUserId w AndroidManifest.xml, aby aplikacja współdzieliła ten sam identyfikator użytkownika z inną aplikacją.

android: sharedUserId

nazwa identyfikatora użytkownika systemu Linux, które będą udostępniane innym zastosowań. Domyślnie Android przypisuje każdej aplikacji własny unikalny identyfikator użytkownika . Jeśli jednak ten atrybut zostanie ustawiony na tę samą wartość dla dwóch lub więcej aplikacji, wszystkie będą miały ten sam identyfikator - , pod warunkiem, że są również podpisane przez ten sam certyfikat. Aplikacja z tym samym ID użytkownika może uzyskać dostęp do swoich danych i, jeśli jest to wymagane, wykonać ten sam proces.

Należy zauważyć, że muszą być podpisane tym samym certyfikatem.

Dwie aplikacje mają ten sam identyfikator użytkownika, który ma dostęp do zasobów drugiej strony.

Na przykład:

<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"> 

Wtedy możemy init, nowy kontekst com.example przez:

Context friendContext = this.createPackageContext("com.example",Context.CONTEXT_IGNORE_SECURITY); 

i dostęp do pewnych zasobów wspomnianego wniosku:

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

Otrzymuję 'android.content.pm.PackageManager $ NameNotFoundException: Pakiet aplikacji com.example nie został znaleziony'. Czy chodziło Ci o pełną nazwę paczki? – coyer

Powiązane problemy