2

Wir haben eine alte App mit einer Reihe von Funktionen (Dienste). Wir haben auch eine neue App, die damit begonnen hat, einige Funktionen der alten App zu implementieren. Unser Ziel ist, dass, wenn jemand anfängt, den Dienst in der neuen App zu nutzen, die alte App diese Dienste abschalten soll.Share Daten/Flag zwischen zwei Android-Apps

Mein erster Gedanke war ein sehr einfacher Mechanismus, wie das Setzen einer Flagge (in SharedPreferences) und irgendwie ließ die alte Anwendung dieses Kennzeichen abfragen und dann seine Dienstleistungen herunterfahren. Ich habe über MODE_WORLD_READABLE und SharedPreferences gelesen, aber das wird nicht mehr empfohlen. Hat also jemand eine gute Herangehensweise/Lösung dafür?

PS! Die Apps sind mit unterschiedlichen Zertifikaten signiert, aber beide werden von uns entwickelt.

+0

so müssen Sie Ihre alte App sowieso ändern ... dann fügen Sie einfach "ausschalten" Anfrage – pskink

+0

@pskink habe ich nicht ganz verstanden, dass Kommentar Aber ja, wir müssen die alte App ändern, aber es ist entscheidend, dass die alte App ihren Dienst nicht stoppt, bevor sie sicher weiß, dass die neue App sie gestartet hat. (Backup-Service) – Christian

Antwort

1

BroadcastReceiver, empfange System-Broadcast Intent sollte funktionieren. Neuere Version der App sendet die "neuere Version aktiviert" Absicht, und wenn es ältere Version läuft, wird es diese Sendung empfangen und diese Dienste ausschalten.

+0

Das ist auch etwas, über das ich nachgedacht habe, also werde ich es vielleicht einfach versuchen :) – Christian

1

Hallo können Sie Contentprovider verwenden ContentProvider

Oder verwenden SharedPreferences

Set sharedUserId in beide wie com.example Anwendungen gleich zu sein.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.hello" 
android:versionCode="1" 
android:versionName="1.0" 
android:sharedUserId="com.example"> 

Get Context aus dem Paket:

mContext = context.createPackageContext(
         "com.example.otherapp", 
         Context.MODE_PRIVATE); 
mPrefs = mContext.getSharedPreferences("sameFileNameHere", Activity.MODE_PRIVATE); 
+0

Ich werde das auf jeden Fall testen! Wenn es funktioniert, wird es perfekt sein :) – Christian

+0

[Die gleiche Antwort hier.] (Http://StackOverflow.com/A/24478043/218198) – milkersarac

0

Inhalt Anbieter ist definitiv die eine Lösung für Sie.

Andere Option ist, Daten zwischen Prozessen zu passieren, muss es gemarshallt werden und unmarshal entsprechend. Dieses Marshaling und Deinstallieren von Daten zu primitiven Typen ist so, dass das OS es verstehen kann, dass das Übergeben von Interprozesskommunikation (IPC) mühsam und fehleranfällig sein kann, wenn es manuell durchgeführt wird. Android interface definition language (AIDL) helps solve this problem.

folgen here

http://developer.samsung.com/technical-doc/view.do;jsessionid=C7B3534740D7D9C4B3A7E44D08D55D75?v=T000000110

http://codetheory.in/android-interprocess-communication-ipc-with-aidl/

Verwandte Themen