如何以编程方式在 Android 个应用程序之间切换
How to switch between Android apps programmatically
我想在两个 运行 Android 应用程序(一个客户端和一个服务器)之间快速切换,以进行调试。两者通过套接字连接。理想情况下,我想向两者添加一个按钮以切换到另一个(保持连接),这样我就可以轻松地看到两端发生了什么。
这是我的尝试:
使用 "Recent Apps" 按钮
这工作正常但有点尴尬,尤其是在堆栈很大的情况下。
使用分屏
这也很好用,但小屏幕有问题
尝试过第三方应用切换器但不喜欢这些。
已尝试按包名称启动 Activity(单击按钮时)
这将是我的首选解决方案,但有问题。切换正常,但每次创建、启动并推送到堆栈(不保留连接)时都会创建一个新任务。代码如下:
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 );
}
终于知道怎么切换应用了
以编程方式(保留其状态)。在每个应用程序中,我使用 'getTaskId()' 获取其任务 ID 并将其保存到 /sdcard/ 上的文件中。
然后,在每个应用程序中,单击按钮时,我调用
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 );
}
注意:这些需要权限:
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
- REORDER_TASKS
我想在两个 运行 Android 应用程序(一个客户端和一个服务器)之间快速切换,以进行调试。两者通过套接字连接。理想情况下,我想向两者添加一个按钮以切换到另一个(保持连接),这样我就可以轻松地看到两端发生了什么。
这是我的尝试:
使用 "Recent Apps" 按钮
这工作正常但有点尴尬,尤其是在堆栈很大的情况下。使用分屏
这也很好用,但小屏幕有问题尝试过第三方应用切换器但不喜欢这些。
已尝试按包名称启动 Activity(单击按钮时)
这将是我的首选解决方案,但有问题。切换正常,但每次创建、启动并推送到堆栈(不保留连接)时都会创建一个新任务。代码如下: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 ); }
终于知道怎么切换应用了 以编程方式(保留其状态)。在每个应用程序中,我使用 'getTaskId()' 获取其任务 ID 并将其保存到 /sdcard/ 上的文件中。
然后,在每个应用程序中,单击按钮时,我调用
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 );
}
注意:这些需要权限:
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
- REORDER_TASKS