3

出于调试目的,我想在两个正在运行的 Android 应用程序(客户端和服务器)之间快速切换。两者通过套接字连接进行连接。理想情况下,我想为两者添加一个按钮以切换到另一个(保留连接),以便我可以轻松查看两端发生的情况。

这是我尝试过的:

  • 使用“最近的应用程序”按钮
    这很好用,但有点尴尬,尤其是在堆栈很大的情况下。

  • 使用分屏
    这也很好,但小屏幕有问题

  • 尝试过第三方应用程序切换器,但不喜欢这些。

  • 通过包名称尝试 startActivity(单击按钮)
    这将是我的首选解决方案,但有问题。切换好的,但每次创建新任务时,启动并推送到堆栈(不保留连接)。下面的代码:

    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 );
    }  
    
4

1 回答 1

2

我终于想出了如何以编程方式在应用程序之间切换(保留它们的状态)。在每个应用程序中,我使用“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
于 2019-12-17T20:30:32.060 回答