2010-11-30 8 views
2

Ich habe zwei Apps, die sich beide auf demselben System anmelden, aber sie haben separate Funktionen und sind möglicherweise nicht beide gleichzeitig installiert. Ich kann die beiden Apps mit der gleichen Signatur kein Problem signieren, sie sogar im selben Prozess laufen lassen.Login-Sitzung für mehrere Android-Apps beibehalten

Wie kann ich den Login-Cookie (unter anderem) so speichern, dass er von beiden Apps geteilt wird und trotzdem von unbekannten Apps geschützt ist?

Antwort

2

Gemeinsam genutzte Benutzer-ID sollten Sie Zugriff auf den privaten Speicher des anderen erhalten, Sie müssten nur herausfinden, ob der andere bereits installiert war, den absoluten Pfad zu seinem privaten Speicher herausfinden und dann schauen, ob es den Cookie hatte . Hoffentlich verhungern Sie nicht am Tisch der Philosophen.

+1

Ich bezweifle, dass es ein Concurrency-Problem geben würde, besonders wenn er auf den Login aus dem Kontext einer laufenden Aktivität zugreift. Aber dies ist eine bessere Lösung als Inhaltsanbieter (zu schwergewichtig, für andere Apps zugänglich) oder etwas im systemweit freigegebenen Speicher zu speichern. –

0

Ähm ... wie heißt es ... ein Datenanbieter? Nee. Ich bekomme "Service" und "Content Provider" durcheinander.

Legen Sie beide Apps und den Login-Service in den gleichen Prozess. Jede App sollte in der Lage sein, den Dienst zu starten oder nach Sitzungsinformationen und allem anderen abzufragen, das Sie dort einfügen möchten.

Alternativ können Sie alle diese Informationen in eine gemeinsame Datenbank einfügen.

Der Login-Dialog selbst muss wahrscheinlich eine Aktivität sein, und ich bin mir nicht sicher, ob Sie eine Aktivität innerhalb eines Service haben können. Sie benötigen möglicherweise doppelte Anmeldebildschirme in Ihren Apps, die dann die Sitzungsdaten zur Freigabe an Ihren Dienst weitergeben können.

Ich bin mir nicht sicher, ob der Dienst eine separate Installation sein müsste oder etwas, das mit beiden Apps gebündelt werden könnte.

+0

Dies könnte funktionieren, aber es sei denn, sie möchten eine dritte apk vom Markt installieren (Nicht-Marktinstallationen erfordern Einstellungsänderungen, die nicht auf allen Telefonen möglich sind), würde wahrscheinlich zwei eindeutig benannte aber identische Kopien des Dienstes erfordern, einen in jeder apk. und irgendeine Logik findet heraus, welche zu starten ist. –

+0

Ich denke "zwei identische Kopien". OBEN ... es gibt mehrere Apps auf dem Markt, die erfordern, dass Sie bereits etwas Anderes installiert haben. Luft zum Beispiel. Veröffentlichen Sie den Dienst als "Softwarebibliothek" und Sie können loslegen. –

0

Hier ist eine gute Lösung:

What's the best way to do "application settings" in Android?

Da Sie diese zwischen zwei Anwendungen gemeinsam nutzen möchten, unabhängig davon, wie Sie es umsetzen wollen, vergessen Sie nicht, dass dies für alle Anwendungen sichtbar sein . Möglicherweise möchten Sie Ihr Kennwort oder Ihre Sitzungs-ID verschlüsseln. Hier ein Beispiel:

http://android.voxisland.com/code_examples/How_to_encrypt_and_decrypt_strings.rhtml

Viel Glück!

Verwandte Themen