gpt4 book ai didi

android - 如何以编程方式在 Android 应用程序之间切换

转载 作者:行者123 更新时间:2023-11-30 04:58:37 24 4
gpt4 key购买 nike

出于调试目的,我想在两个正在运行的 Android 应用(客户端和服务器)之间快速切换。两者通过套接字连接。理想情况下,我想向两者添加一个按钮以切换到另一个(保持连接),这样我就可以轻松地看到两端发生了什么。

这是我尝试过的:

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

  • 使用分屏
    这也能正常工作,但小屏幕有问题

  • 尝试过第三方 App Switcher,但不喜欢这些。

  • 尝试按包名称启动 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 - 如何以编程方式在 Android 应用程序之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com