是否可能从另一个应用程序中运行一个应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动。
因此,在横向模式下,它应该看起来像这样:
背后的想法是:
我想能够启动和运行第三方活动以及我的活动,并且我想能够使用我的活动创建控制第三方活动的个别宏。
基本上,就像这样:
- 从我的应用程序内部启动第三方活动
- 开始宏记录
- 在第三方活动中做一些事情
- 停止宏记录
- 随时使用宏
那么我如何从我的活动中启动和控制另一个活动呢?
是否可能从另一个应用程序中运行一个应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动。
因此,在横向模式下,它应该看起来像这样:
背后的想法是:
我想能够启动和运行第三方活动以及我的活动,并且我想能够使用我的活动创建控制第三方活动的个别宏。
基本上,就像这样:
那么我如何从我的活动中启动和控制另一个活动呢?
非Root:
遗憾的是,想要在不进行手机Root的情况下实现您所需的功能似乎是不可能的,因为您只能通过意图与其他应用程序交互。由于开发人员可以决定他们的应用程序如何针对特定意图做出反应,因此通过这种方式创建宏几乎是不可能的。
已Root的手机:
您可能想要创建所有已安装应用程序的列表,您可以使用
getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
获取所有已安装应用程序列表。
MotionEvent#obtain
重新创建这些事件。现在,需要使用已经获取了权限INJECT_EVENTS的rooted手机。启动应用程序并注入事件以执行宏。示例代码:
Instrumentation m_Instrumentation = new Instrumentation();
m_Instrumentation.sendPointerSync(motionEvent);
关于程序化注入(以及按键事件),您可以在这里找到更多信息。
如果您需要帮助编译应用程序,这两个链接将对您有帮助:如何使用系统权限编译Android应用程序,Android INJECT_EVENTS权限
不可能在一个View
中启动应用程序,但您可以从您的应用程序中启动应用程序:
Intent i = getPackageManager().getLaunchIntentForPackage("com.package.ofapp");
startActivity(i);
onTouchEvent()
方法中实现。https://play.google.com/store/apps/details?id=com.lwi.android.flapps
如果您使用意图(Intents),那么这是可能的。它们允许您在屏幕之间移动,并在同一应用程序内启动另一个不同的功能。请访问Coursera以获取有关意图的更多教程。