Android Bibliotheksprojekt - Wie bekomme ich Kontext?

8

Ich habe Code aus verschiedenen Versionen der gleichen App (kostenpflichtig / kostenlos) gerne in Android-Bibliotheksprojekte umgestaltet, damit die eigentlichen Apps die Bibliothek einfach anpassen und die Codeverdopplung reduzieren können.

Eine Sache, die ich mich frage, ist, was getApplicationContext() im Bibliothekscode bedeutet? Ist das gleiche ApplicationContext wie man es von den Kind-Apps bekommen würde? Was passiert, wenn ich auf SharedPreferences von% ce_de% eines Bibliotheksprojekts anstelle von getApplicationContext() der ursprünglichen App zugreife? Ist die Datei getApplicationContext() gleich oder anders?

Was wäre, wenn ich über die Aktivität auf SharedPreferences zugegriffen hätte? Ist es wichtig, dass die Aktivität jetzt eine Bibliotheksaktivität ist und nicht die ursprüngliche App? Ist die SharedPreferences gleich?

Danke für die Klärung.

    
amit 07.02.2012, 11:47
quelle

2 Antworten

13

Wenn das APK gepackt ist, gehören alle Klassen zur Hauptanwendung.

ruft getApplicationContext (). getPackageName () auf und gibt den Paketnamen der Anwendung und nicht das Paket der Bibliothek zurück.

Ich habe das gleiche Setup für eine kostenlose / kostenpflichtige Anwendung und keine Probleme, wenn ich meine Klassen in ein Bibliotheksprojekt verschoben habe.

Sie müssen jedoch Ihre XML-Dateien (Manifest, Widgets usw.) überprüfen, um den vollständigen Paketnamen Ihres Bibliotheksprojekts zu verwenden.

    
ramdroid 07.02.2012, 12:16
quelle
1

Ein Bibliotheksprojekt ist fast so, als hätte man den gesamten Code in einem Projekt. Es gibt ein paar Dinge, auf die man bei Namespaces achten sollte, aber im Allgemeinen funktioniert es sehr gut.

z.B. Ihre Bibliothek hat einen eigenen Namespace

Bibliothekspaketname = uk.co.lib Haupt-App-Paket name = uk.co.app

Aktivitäten in der Bibliothek, für die Sie einen Zugriff von der Haupt-App aus benötigen, müssen dem App-Manifest hinzugefügt werden. Die Aktivität namens A im Bibliotheksprojekt wird hinzugefügt, um in der Haupt-App wie folgt zu manifestieren:

%Vor%

Der Zugriff auf gemeinsame Einstellungen usw. würde das gleiche Ergebnis aus beiden Namespaces ergeben und würde die Einstellungen für die App zurückgeben.

Es gibt nur eine Anwendung, daher gibt es nur einen ApplicationContext

    
Kuffs 07.02.2012 12:15
quelle

Tags und Links