デバイスにアプリケーションがインストールされています。次のコードを使用して、別のアプリケーションBのボタンクリックからこのアプリケーションAを起動しようとしています。
Button buttonStart = (Button)findViewById(R.id.buttonStart);
buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClassName("co.abc.android.test",
"co.abc.android.test.Abc");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
以下は私の問題です:
アプリケーションAを起動します
ホームボタンを押す
アプリケーションBのボタンonclickから、アプリAを再度起動します
- 戻るボタンを押して、アプリBから起動されたアプリケーションAを終了します。
- 戻るボタンを押してアプリケーションAを終了しましたが、最初に起動したアプリAのメインアクティビティに再び移動します。
この問題を参照する際に、 Intent.FLAG_ACTIVITY_CLEAR_TOPを使用 するとこれが解決されることを多くの場所で読みました。しかし、コンテキストにアクセスできない場所からアプリAのインテントを呼び出すため、次のエラーが発生します。
01-01 00:09:54.694: ERROR/AndroidRuntime(283): *** FATAL EXCEPTION IN SYSTEM PROCESS: WindowManagerPolicy
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at android.app.ContextImpl.startActivity(ContextImpl.java:884)
at com.android.internal.policy.impl.LockScreen$DialerMethods.onTrigger(LockScreen.java:218)
at com.android.internal.widget.multiwaveview.Dialer$2.run(Dialer.java:366)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at com.android.server.wm.WindowManagerService$PolicyThread.run(WindowManagerService.java:752)
戻るボタンを押したときに同じアクティビティ(以前に起動した場合)が再度表示されないように、この問題を解決するにはどうすればよいですか?
どんな助けでも大歓迎です。