0

アプリケーション内でクリックするだけで複数のアプリケーションを実行できるかどうか疑問に思っています。つまり、ユーザーが 2 つの異なるアプリケーションから情報を追加する必要がある 1 つのプロセスに対して、社内にいくつかのアプリケーションがあります。これら 2 つのアプリケーションを別のアプリケーションとして起動するショートカットを作成することは可能でしょうか?

つまり、それぞれに「Intent.FLAG_ACTIVITY_NEW_TASK」というフラグがあります

いくつかの「ニックネーム」オープナーを割り当てましょう = 私が使用しているアプリケーション。2 つのアプリケーションを開くためのショートカットを追加する場所 i1 = アプリケーション 1 i2 = アプリケーション 2

私が使用するサンプルコードは次のとおりです。

Intent i1 = getAppIntent(someValueToGetTheIntent);
if (i1 != null){
    i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i1);
}

Intent i2 = getAppIntent(someOtherValueToGetTheIntent);
if (i2 != null){
    i2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i2.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i2);
}

これを行うと、i2 アプリケーション (インテント) が一番上にあります。i1 (開いているアプリケーション メニュー) に移動して他のアプリケーションに切り替えようとすると、存在しません。オープナーと i2 は表示されますが、i1 は表示されません。戻るボタンをクリックすると、i1 が開始され、すべてが表示されます。でも最初からそこにいてほしい。

3 つを開いてユーザーがそれらの間を移動できるようにする必要がある理由は、3 つにはアプリケーションと対話するために必要なさまざまな情報が含まれているためです。eje opener には学校と生徒の情報を入力するフォームがあり、i1 には学校の情報があり、i2 には生徒の情報があります。

アプリを統合するのが最善の方法であることはわかっていますが、現時点では統合できないため、これはユーザーにとって大きな助けになるでしょう。

したがって、複数のアプリケーションを新しいタスクとして開始する方法を知りたいので、両方のアプリがアプリケーション メニューに表示され、ユーザーはそれらを切り替えることができます。

編集

Intent 配列を取得し、すべてのアプリケーションを起動するメソッド startActivities に気付きました。これは私が必要としているものの一種です。「ユーザーが最初にアクセスしたときに作成されます(上部のアクティビティから押し戻されたため)。」その戻るボタンの動作を回避できるのだろうか。

そのため、ユーザーが戻る前にそれらを「作成」できます。

4

3 に答える 3

1

はい、できます。非同期スレッドでも実行することをお勧めします。これは、Android アプリで非同期タスクを実行するために使用する ksoap2 ライブラリの jar です。

https://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/#ksoap2-android-assembly%2F2.5.5

さらに助けが必要な場合は、Lmk.

于 2013-10-31T20:53:56.157 に答える
1

Android では、一度にアクティブにできるアクティビティは 1 つだけです。新しいアクティビティが開始されると、現在のアクティビティが「アクティビティ スタック」に保存され、後で使用できるようになります。ガベージ コレクターが安全であると判断した場合、システムは最終的にアクティビティ スタックをクリーンアップします。

あなたがやろうとしていることを行う正しい方法は、アプリケーションがアプリケーション間で渡されるカスタム インテントを作成することです。これは、関係のないアプリケーション間でデータを渡す Android の方法であり、問​​題を処理する正しい方法です。

2 つのアプリケーションではなく、2 つのアクティビティについて話している場合は、 を使用できますstartActivityForResult()。これにより、インテントで明示的に渡すのではなく、アクティビティから結果を返すことができます。この方法で常に自分でシリアル化する必要があるとは限らないため、これはより良い場合があります。

于 2013-10-31T23:49:34.920 に答える
0

皆さんのご協力に感謝します。Android に組み込まれている startActivities を使用し、戻るボタンを使用してアクティビティ間を移動する必要があることをユーザーに知らせるのが最善の方法であることを私は知っています。現時点では、これは私にとって選択肢ではありません。

私はこのようなタイマーを使用して終了します:

lunchAppTimer.removeCallbacks(runnable);
lunchAppTimer.postDelayed(runnable, 2000);
Handler lunchAppTimer = new Handler();
private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        new LaunchApplication(mLIntent).execute();
    }
};

LaunchApplication には startActivity があり、これは特定の時点で必要なすべてのアクティビティを通じて繰り返されます。

繰り返しますが、これは最善のアプローチではないかもしれませんが、私が行った検索では、2 つ以上のアプリケーションを実行するためのより良い解決策を見つけることができませんでした。

于 2013-11-02T02:13:24.070 に答える