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



为了调试目的,我想在两个运行的Android应用程序(客户端和服务器(之间快速切换。两者通过插座连接。理想情况下,我想在两者上都添加一个按钮来切换到另一个(保留连接(,这样我就可以很容易地看到两端发生了什么。

以下是我尝试过的:

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

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

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

  • 尝试按程序包名称启动活动(单击按钮(
    这是我的首选解决方案,但出现了问题。切换正常,但每次创建、启动新任务并将其推送到堆栈上(不保留连接(。以下代码:

    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
  • 写入外部存储
  • 重新排序任务

相关内容

  • 没有找到相关文章

最新更新