2017-02-09 2 views
0

Wie führe ich eine andere Anwendung in meiner eigenen aus? Wenn ich Tätigkeit beginnen möchte ich es in meiner Anwendung zeigen und mit der Aktivität von verschiedenen Anwendungs ​​meine Container Aktivität ersetzen (aber auf recent tasks wird, sollte nach wie vor als „Container App“ angezeigtAndere Anwendung in meiner App starten (Container)

PackageManager manager = context.getPackageManager(); 
    Intent   intent = manager.getLaunchIntentForPackage(packageName); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 
    context.startActivity(intent); 
    context.finishAffinity(); 

Diese eröffnen neue Aufgabe in meinem recent tasks Tab. Aber wie in der gleichen Aufgabe bleiben?

+0

Fragment ist der Weg zu gehen hier –

+0

So weit ich weiß, ist dies nicht möglich. – AnixPasBesoin

+0

@AHoneyBustard Können Sie Ihren Ansatz mit Fragmenten erklären? Ich würde es gerne wissen. – AnixPasBesoin

Antwort

0

das ist nicht möglich.

Jede Anwendung läuft in einem eigenen Prozess. Sie können jedoch mehrere Anwendungen in demselben Prozess ausführen lassen, wenn Sie in beiden Anwendungen android:shareUserID und android:process dieselben Werte zuweisen und sie mit demselben Zertifikat signieren.

Can multiple Android applications share a single process and application context?

https://android.stackexchange.com/questions/42129/why-each-android-application-runs-on-a-different-dalvik-vm-process

1

Zum einen ist das Konzept der "Anwendung" in Android leicht eine erweiterte ein.

Eine Anwendung - technisch ein Prozess - kann mehrere Aktivitäten, Dienste, Content-Provider und/oder Broadcast-Listener haben. Wenn mindestens einer von ihnen ausgeführt wird, läuft die Anwendung (der Prozess).

Also, was Sie identifizieren müssen, ist, wie möchten Sie "die Anwendung starten".

Ok ... hier, was Sie ausprobieren können:

eine Absicht erstellen mit action = MAIN und category = LAUNCHER die Packagemanager aus dem aktuellen Kontext Get context.getPackageManager packageManager.queryIntentActivity mit (0) where intent hat category = LAUNCHER, action = MAIN oder packageManager.resolveActivity (, 0) um die erste Aktivität mit main/launcher zu erhalten Holen Sie sich dieActivityInfo, die Sie interessiert Erhalten Sie aus der ActivityInfo den packageName und den Namen Schließlich erstellen Sie einen anderen intent mit mit category = LAUNCHER, action = MAIN, componentName = neuer ComponentName (Paketname, Name) und setFlags (Intent.FLAG_ACTIVITY_ NEW_TASK) Schließlich context.startActivity (newIntent)

Verwandte Themen