我希望我的 Android 应用程序在屏幕的专用区域上启动另一个应用程序,即设置显示另一个应用程序的屏幕边界。下面是一个屏幕截图,其中包含一个示例,其中我在我的应用程序上启动了 Google 地图:
这是通过以下代码实现的:
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 上实现这一目标的可能方法是什么?