2013-04-30 14 views
10

私のAndroidアプリケーションでは、これからインストールされた他のアプリケーションを起動できます。これはいくつかの許可されたアプリケーションを示しています。ユーザーが許可されていないアプリケーションを起動しようとすると、メッセージを表示し、実行中のタスクを使用して自分のアクティビティ(各アプリケーションの起動先)に戻ります。私のアプリケーションはホームランチャーとして機能します。ブロックされたアプリケーションの場合、このアクティビティの意図があります。たとえば:Samsungデバイスのギャラリーからカメラを起動することができます。カメラが許可されていない場合、ブロックされたメッセージが表示され、しかし、ギャラリーを再起動すると、トップアクティビティ(カメラ​​アクティビティ)がスタック内に横たわっているため、ブロックされたメッセージが再度表示されます。アプリケーションの終了を検出することは可能ですか?

しかし、これらのブロックされたアプリケーションの終了は完全には機能しませんでした。

  1. アプリケーションの終了/終了イベントは取得できますか?

  2. どのようにアプリケーションを完成させることができますか(すべてのアプリケーションを終了することによって)。

  3. 以前に起動した履歴を持たずにアプリケーションを起動するにはどうすればよいですか?

アドバンス

答えて

14

のおかげで、アプリケーションのクローズ/終了イベントを取得することが可能ですか?

あなたLauncherActivityあなたは、このメソッドは、アプリケーションの終了時にoverrideonDestroyと呼ばれることができます内側はい、それは可能です。

How can i finish an application as whole(By finishing all its applications)? 

ここでは、すべての実行中のアクティビティを停止したいと考えています。これは複数の方法で達成できます。

android.os.Process.killProcess(android.os.Process.myPid()); 

または

Intent intent = new Intent(getApplicationContext(), YourHomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

これは、すべての活動や意志HomeActivityにユーザーをもたらしますがクリアされます。これを呼び出している間にインテントにフラグを追加し、その値を使用するとHomeActivityも終了できます。 finish()メソッドを使用してアクティビティを終了します。

前回の履歴を持たずにアプリケーションを起動する方法 ?

これを達成するために、上記の同じソリューションを使用できます。 2番目のもの。

希望すると、これが役立ちます。

アプリケーションクラスにはonTerminateメソッドがありますが、これは運用環境では使用できません。この詳細についてはこちらをご覧くださいhere

+1

+1素晴らしい答えです。 –

+0

onDestroy()を使用している間、ここで私は自分のアプリケーションの終了を検出します。私のアプリケーションから起動する他のアプリケーションのシャットダウンイベントを検出したいと思います。 –

+5

Wait .... LauncherActivityのonDestroy関数をオーバーライドしますか? LauncherActivityが別のアクティビティにナビゲートするとどうなりますか?これもonDestroyを呼び出します。これは私には悲惨なようです。私が間違っているなら、あなたは私を正してくれますか? – Subby

関連する問題