3

我希望我的 Android 应用程序在屏幕的专用区域上启动另一个应用程序,即设置显示另一个应用程序的屏幕边界。下面是一个屏幕截图,其中包含一个示例,其中我在我的应用程序上启动了 Google 地图:

在启动 3rd 方应用程序之前 在专用区域启动的第 3 方应用程序

这是通过以下代码实现的:

final String packageName = "advanced.scientific.calculator.calc991.plus";
    new Handler().postDelayed(() -> {

        final int[] location = new int[2];
        containerLayout.getLocationOnScreen(location);
        final Rect appBounds = new Rect(location[0], location[1],
                location[0] + containerLayout.getWidth(),
                location[1] + containerLayout.getHeight());

        final ActivityOptions launchOpts = ActivityOptions.makeBasic();
        launchOpts.setLaunchBounds(appBounds);

        final Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

        startActivity(intent, launchOpts.toBundle());
    }, 5000);

上面的结果会令人满意,但是这是在运行 Android 10 的三星 Galaxy S10 设备上运行的。现在,我需要能够使用 Android 9 实现类似的结果。我研究了画中画和自由格式模式,但我没有设法将前者用于此目的,不幸的是后者似乎仅适用于 Android 10 及更高版本。我愿意为此提供任何解决方案,包括创建启动器应用程序等。我还希望最大限度地提高与第三方应用程序的兼容性。

在 Android 9 上实现这一目标的可能方法是什么?

4

0 回答 0