我有申请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.
有什么想法吗?
答案 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 - 它显示了如何关闭应用内的所有活动。但是,从另一个人那里做这件事并不是一大步......