6

我正在尝试通过单击按钮在另一个中打开一个不同的、已安装的 android 应用程序。新应用程序应在调用应用程序内的部分屏幕中打开。

目前,我的代码创建了一个新意图并在其中运行被调用的应用程序。调用应用程序消失。这是我的代码:

        b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            PackageManager pm = getPackageManager();
            Intent intent = pm.getLaunchIntentForPackage("com.ritwik.camera");
            startActivity(intent);
        }

    });

理想情况下,它应该作为同一屏幕的一部分打开,而不会排挤父(调用)应用程序。我怎么做?

4

3 回答 3

3

当您启动 Intent 以执行另一个应用程序(即,因为您正在实现启动器或主菜单替换)时,您实际上是在要求 android 执行使用特定包标识的应用程序(或满足某些特定约束的应用程序,例如能够处理图像,视频等),没有任何关于它包含的活动的线索或参考(也没有能力获得任何......)。

因此,我认为当前版本的操作系统不可能实现您想要实现的目标(除非某些供应商提供扩展来做到这一点,请参阅 Pratik 的评论)。

于 2013-03-26T12:26:08.737 回答
1

据我所知,这是不可能的。您只能启动新活动,但您无法控制它。

编辑:某些设备使用Cornerstone或类似框架提供这种可能性,但我还没有看到开发人员可以将其用于自己的应用程序的选项。

于 2013-03-26T12:21:07.953 回答
1

新应用程序应在调用应用程序内的部分屏幕中打开。

这对于传统的第三方应用程序 UI 是不可能的。

AFAIK,从 Android 3.0 开始支持分屏功能(自适应 UI)。

这与将第三方应用程序的 UI 嵌入您自己的应用程序无关。

所以我没有明白你的意思是“当前版本的操作系统不可能”

截至 2013 年 3 月 26 日东部时间上午 9:50 发布的任何 Android 库存版本均不提供此功能。

某些设备制造商,如三星,已通过多窗口功能扩展了 Android。但是,对这些窗口的控制权在于用户和(修改后的)操作系统。除非他们的 S-Pen SDK 中有此功能,否则您无法启动另一个窗口。

Android 也有RemoteViews,这是在进程之间传递简化 UI 的一种方式。使用它,一个应用程序可以嵌入RemoteViews另一个应用程序发布的内容。例如,您可以通过主屏幕上的应用小部件看到这一点。但是,编写这两个应用程序时都必须牢记这一点,例如发布AppWidgetProvider应用程序以向主屏幕提供应用程序小部件。

于 2013-03-26T13:50:39.763 回答