2013-04-29 5 views
17

Können zwei Apps mit gemeinsamer UserID auf andere Ressourcen wie Zeichen- oder Zeichenfolgen zugreifen?Zwei App mit geteilter Benutzer-ID

Können sie auf andere Assets zugreifen?

Können sie Komponenten der anderen aktivieren oder deaktivieren?

Wenn eine dieser Möglichkeiten möglich ist, erläutern Sie bitte, wie dies geschehen muss.

Ich suchte viel, konnte aber kein Beispiel über userId teilen finden.

+0

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

Antwort

43

Sie können android:sharedUserId in AndroidManifest.xml verwenden, damit Ihre Anwendung die gleiche Benutzer-ID mit einer anderen Anwendung teilt.

android: sharedUserId

Der Name eines ID Linux-Benutzer, die mit anderen Anwendungen gemeinsam genutzt werden. Standardmäßig weist Android für jede Anwendung eine eindeutige Benutzer-ID zu. Wenn dieses Attribut jedoch für zwei oder mehr Anwendungen auf denselben Wert gesetzt ist, haben alle die gleiche ID - , vorausgesetzt, sie sind ebenfalls mit demselben Zertifikat signiert. Anwendung mit der gleichen Benutzerkennung kann auf die Daten des jeweils anderen zugreifen und, wenn gewünscht, im selben Prozess laufen.

Beachten Sie, dass sie mit demselben Zertifikat signiert werden müssen.

Zwei Anwendungen haben die gleiche Benutzerkennung und können auf die Ressource des jeweils anderen zugreifen.

Zum Beispiel:

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

Dann können wir einen neuen Kontext von com.example von init:

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

Und Zugriff auf einige Ressourcen dieser Anmeldung

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

Ich bekomme 'android.content.pm.PackageManager $ NameNotFoundException: Anwendungspaket com.example nicht gefunden'. Meintest du den vollen Paketnamen? – coyer

Verwandte Themen