2017-02-09 5 views
0

私自身のアプリケーションの中で別のアプリケーションを実行する方法。私が活動を開始すると、私は自分のアプリケーション内でそれを表示し、別のアプリケーションからの活動と私のコンテナの活動を置き換えたい(しかしrecent tasksにまだ私のrecent tasksに「コンテナのApp」私のアプリ(コンテナ)内で別のアプリケーションを起動

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

このオープン新しいタスクとして表示する必要がありますされますタブ。しかし、どのように同じタスクに残る?

+0

ここに行く方法は断片です –

+0

私が知る限り、これは不可能です。 – AnixPasBesoin

+0

@AHoneyBustardあなたのフラグメントに関するあなたのアプローチを説明できますか?私はそれについて知りたいです。 – AnixPasBesoin

答えて

0

これは不可能です。

すべてのアプリケーションの実行それ自身のプロセスで。ただし、両方のアプリケーションで同じ値をandroid:shareUserIDandroid:processに割り当て、同じ証明書で署名すると、複数のアプリケーションを同じプロセスで実行することができます。

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

まず、アンドロイドの "アプリケーション" の概念が少し拡張です。

アプリケーションは、技術的にプロセスであり、複数のアクティビティ、サービス、コンテンツプロバイダ、および/またはブロードキャストリスナを持つことができます。それらのうちの少なくとも1つが実行中の場合は、アプリケーションが起動して実行されています(プロセス)。

したがって、どのように識別する必要があります "アプリケーションを開始する"です。

[OK]を...ここにあなたが試すことができるものです。

アクション= MAINとカテゴリ= LAUNCHER と意図を作成context.getPackageManager packageManager.queryIntentActivityを使用して、現在のコンテキストからPackageManagerを取得する(0)ここでintentはcategory = LAUNCHER、action = MAINまたはpackageManager.resolveActivity(、0)を使用してメイン/ランチャーで最初のアクティビティを取得します に興味のあるアクティビティ情報を取得ActivityInfoからpackageNameと名前を取得します 最後に、カテゴリ= LAUNCHER、アクション= MAIN、componentName =新しいComponentName(packageName、name)およびsetFlags(Intent.FLAG_ACTIVITY_ NEW_TASK) 最後に、context.startActivity(newIntent)

関連する問題