Zwei Apps mit gemeinsamer UserID

Lesezeit: 2 Minuten

Können zwei Apps mit gemeinsamer UserID auf Ressourcen wie Drawables oder Strings zugreifen?

Können sie auf die Vermögenswerte des anderen zugreifen?

Können sie Komponenten des anderen aktivieren oder deaktivieren?

Wenn irgendetwas davon möglich ist, erklären Sie bitte, wie es gemacht werden muss.

Ich habe viel gesucht, konnte aber kein Beispiel für das Teilen von Benutzer-IDs finden.

  • Duplikat von stackoverflow.com/questions/9783765/…

    – Bläser

    4. November 2013 um 23:42 Uhr

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

android:sharedUserId

Der Name einer Linux-Benutzer-ID, die mit anderen Anwendungen geteilt wird. Standardmäßig weist Android jeder Anwendung eine eigene eindeutige Benutzer-ID zu. Wenn dieses Attribut jedoch für zwei oder mehr Anwendungen auf denselben Wert gesetzt wird, teilen sie sich alle dieselbe ID – vorausgesetzt, sie sind auch mit demselben Zertifikat signiert. Anwendungen mit derselben Benutzer-ID können auf die Daten der anderen zugreifen und, falls gewünscht, im selben Prozess laufen.

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

Zwei Anwendungen, die sich dieselbe Benutzer-ID teilen, 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 initieren com.example durch:

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

Und greifen Sie auf einige Ressourcen dieser Anwendung zu:

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

  • Ich bekomme android.content.pm.PackageManager$NameNotFoundException: Application package com.example not found. Meinten Sie den vollständigen Paketnamen?

    – schüchtern

    28. November 2016 um 9:51 Uhr

  • Aus der Android-Dokumentation „Gemeinsam genutzte Benutzer-IDs verursachen nicht deterministisches Verhalten innerhalb des Paketmanagers. Daher wird von seiner Verwendung dringend abgeraten und kann in einer zukünftigen Version von Android entfernt werden. Stattdessen sollten Apps geeignete Kommunikationsmechanismen wie Dienste und verwenden Inhaltsanbieter, um die Interoperabilität zwischen gemeinsam genutzten Komponenten zu erleichtern.“

    – Prudhi

    23. Dezember 2019 um 18:31 Uhr


1005180cookie-checkZwei Apps mit gemeinsamer UserID

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy