从其他应用关闭应用

时间:2013-03-13 20:32:26

标签: android

我有申请A和申请B.

我以A的意图以这种方式启动B:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.applicationB", "com.applicationB.MainActivity");
intent.putExtra(EXTRA_NAME,"name");
startActivity(intent);

当用户关闭应用程序A时,我也希望应用程序B关闭。应用B具有JNI并使用exec()命令。

我已经尝试了android:sharedUserId但是当应用A尝试使用上面的代码启动B时出现此错误:

Error running exec(). Command: [....] Working Directory: null Environment: (not null, it shows all the environment.

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你必须使用Android IPC机制,如广播接收器

当应用程序A关闭时,它应发送广播,应用程序B应注册广播接收器以从应用程序A捕获广播

请参阅文档以获取更多信息http://developer.android.com/reference/android/content/BroadcastReceiver.html

答案 1 :(得分:1)

如果两个应用程序都由您自己编程,您可以考虑在应用程序B中添加BroadcastReceiver,注意所有活动都已关闭。在应用程序A关闭之前,请调用该接收器并完成。

如果您不确定显示哪个活动,可以使用BroadcastReceiver扩展Activity类,以便通知所有活动。

如果您没有编写应用B,则可以使用killbackgroundProcesses(),例如

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(myProcessId);

...但是,这仅适用于应用B实际上是在后台。此外,这不是关闭应用程序的最佳选择,因为您不知道应用程序当前正在做什么。

编辑:在该主题上找到了我最喜欢的示例:-) check http://www.hrupin.com/2011/10/how-to-finish-all-activities-in-your-android-application-through-simple-call - 它显示了如何关闭应用内的所有活动。但是,从另一个人那里做这件事并不是一大步......