如何以编程方式在Android应用程序之间切换
为了调试的目的,我想在两个运行的Android应用程序(客户端和服务器)之间快速切换。两者通过插座连接。理想情况下,我想在两者之间添加一个按钮来切换到另一个(保留连接),这样我就可以很容易地看到两端发生了什么 以下是我尝试过的:如何以编程方式在Android应用程序之间切换,android,start-activity,android-recents,split-screen-multitasking,Android,Start Activity,Android Recents,Split Screen Multitasking,为了调试的目的,我想在两个运行的Android应用程序(客户端和服务器)之间快速切换。两者通过插座连接。理想情况下,我想在两者之间添加一个按钮来切换到另一个(保留连接),这样我就可以很容易地看到两端发生了什么 以下是我尝试过的: 使用“最近的应用”按钮 这很好,但有点尴尬,尤其是当堆栈很大时 使用拆分屏幕 这也很好,但小屏幕有问题 尝试了第三方应用程序切换,但不喜欢这些 已按包名尝试startActivity(单击按钮) 这将是我的首选解决方案,但有问题。切换为Ok,但每次创建、启动新任务并将
- 使用“最近的应用”按钮
这很好,但有点尴尬,尤其是当堆栈很大时 - 使用拆分屏幕
这也很好,但小屏幕有问题 - 尝试了第三方应用程序切换,但不喜欢这些
- 已按包名尝试startActivity(单击按钮)
这将是我的首选解决方案,但有问题。切换为Ok,但每次创建、启动新任务并将其推送到堆栈上时(不保留连接)。代码如下:void switchToClient() // from Server (on Button click) { // Alternative Flags Tried: none, FLAG_ACTIVITY_SINGLE_TOP, FLAG_ACTIVITY_NEW_TASK, other Intent intent; intent = this.getPackageManager().getLaunchIntentForPackage( "com.example.Client" ); intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); startActivity( intent ); }
void switchTask()
{
int tid;
ActivityManager am;
am = (ActivityManager)Ctx.getSystemService( Context.ACTIVITY_SERVICE );
tid = getPkgTaskId(); // read task id of *other* app from file
am.moveTaskToFront( tid, 0, null );
}
注意:这些需要权限:
- 读取外部存储器
- 写入外部存储器
- 重新排序任务