应用内的应用

PKl*_*mpp 14 android multitasking

是否可以从另一个应用程序内部运行应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动.

所以在横向模式下,它看起来应该是这样的:

在此输入图像描述

这背后的想法是:

我希望能够在我自己的活动旁边开始并运行第三方活动,并且我希望能够通过控制第三方活动的活动创建单独的makros.

基本上,这样的事情:

  • 从我的应用内部启动第三方活动
  • 开始makro录制
  • 在第三方活动中做点什么
  • 停止makro录音
  • 随时使用makro

那么如何从我自己的活动中启动和控制另一个活动呢?

Com*_*Guy 21

无根:
可悲的是,如果没有手机,你想要实现的目标似乎是不可能的,因为你只能通过意图与其他应用互动.由于开发人员决定他们的应用程序对特定意图的反应,因此以这种方式创建宏几乎是不可能的.

有根电话:

  1. 您可能希望创建所有已安装应用的列表,您可以使用

    getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
    
    Run Code Online (Sandbox Code Playgroud)

    检索所有已安装应用的列表.

  2. 如果用户现在选择应用程序,则通过意图启动它并创建系统覆盖以获取所有触摸/键事件(并让用户停止宏).你可以在这里找到一种方法.存储触摸事件的x/y值.
  3. 您可以使用重新创建事件MotionEvent#obtain.
  4. 现在需要一个带根电话的部分(权限INJECT_EVENTS).启动应用程序并注入事件,以便宏执行.Samplecode:

    Instrumentation m_Instrumentation = new Instrumentation();
    m_Instrumentation.sendPointerSync(motionEvent);
    
    Run Code Online (Sandbox Code Playgroud)

    您可以在此处找到有关注入(也包括keyevents)的更多信息.

  5. 如果您需要帮助来编译您的应用程序,这两个链接将帮助您:如何使用系统权限,Android INJECT_EVENTS权限编译Android应用程序