他のアプリがインテントを通じて起動できるようにするAndroidアプリがあります。仕掛けられていないAndroidの子アクティビティを処理する方法
Intent intent = new Intent("com.myapp.dosomething");
intent.putExtra("com.myapp.value1", "1.25");
intent.putExtra("com.myapp.value2", "bob");
startActivity(intent);
私の活動はインテントフィルタで開始されています:
これは、呼び出し元のアプリケーションは、(APP-Aそれを呼び出す)以下のんなど他のアプリは、鉱山と相互作用して、最初の入力を提供することができます
<intent-filter>
<action android:name="com.myapp.dosomething" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
ユーザーが私のアプリケーションの通常の流れを辿ると、すべてうまく動作します。ユーザーは物事をして、ユーザーが完了したことを知ったとき、自分のアクティビティでfinish()を呼び出します。すべてが素敵です。
しかし、私のアプリで何かをやっていると、ユーザーはタスクを終了するのではなく、ホームボタンを押すことになり、大きな問題が発生します。彼らがランチャーからApp-Aを試して再起動すると、代わりに私のアプリがポップアップします。ユーザーはアプリケーションを強制終了せずにApp-Aに戻ることはできません。さらに悪いことに、私のアプリは起動間のデータを保持しないように特別に設計されています。この方法で再起動すると、最初に渡された余分なデータがなくなるので、私のアプリはこの他のアプリがまだ私を待っています。
App-Aがアプリで待っていないように設定するにはどうすればよいですか?私のアプリが何をしているかにかかわらず、実行を続けることができるはずです。私のアプリケーションがクラッシュしたり、値を返さなかったりする場合、私は呼び出し元のアプリケーションを永遠に掛けたくはありません。
アイデア?
ありがとうございました。
「ユーザーはアプリを強制終了せずにApp-Aに戻ることはできません」 - なぜBACKボタンを押すことはできませんか?それは私のために同様の状況で動作します。 – Squonk
まあ、私がアプリケーションAを起動した場合、ユーザーが最後に実行したアプリケーションに関係なく、アプリケーションBが起動するとは思わない。また、様々な理由から、現在、バックボタンをブロックしています(これは間もなく変更される予定ですが、プロジェクトの開始時には設計上の決定が悪い)。しかし、関係なく、最初にapp-aを試して起動しようとすると、私たちのアプリは起動しないはずです。子アクティビティを処理するアクティビティには、いくつかのメカニズムが必要です。 – user456771
OK - あなたは物事をきれいにしたいと思うが、それはAndroidがデフォルトで動作する方法です。私の場合、私のアプリはユーザーの自宅のPCに動画のリストを表示します。彼らがビデオを選択すると、私のアプリはビデオをストリーミングするためにサードパーティのビデオプレーヤーアプリを起動します。ユーザーがHOMEにアクセスしてから、後でもう一度アプリを起動すると、サードパーティのアプリでビデオの再生が再開されます。言い換えれば、私のアプリでのユーザーの最後の行動は、ビデオを開始することでした。ところで、デフォルトの振る舞いが間違っているとは思わないが、私は答えが不思議であるので、あなたの質問をアップしたのは私だった。 – Squonk