是否可以从另一个应用程序内部运行一个应用程序?我要做的是编写一个应用程序,使您可以选择要启动的应用程序,然后在 View 中显示该应用程序的 Activity 。

因此,在横向模式下,它应如下所示:

其背后的想法是:

我希望能够在我自己的 Activity 旁边启动和运行第三方 Activity ,并且我希望能够通过我的 Activity 来创建控制第三方 Activity 的单个马可洛。

基本上是这样的:

  • 从我的应用程序内部开始第三方 Activity
  • 开始makro录制
  • 在第三方 Activity 中做某事
  • 停止录制Maktro
  • 随时随地使用makro


  • 那么,如何从自己的 Activity 中启动和控制另一个 Activity ?

    最佳答案

    无根:
    可悲的是,如果不 Root 手机,您想要实现的目标似乎是不可能的,因为您只能通过意图与其他应用程序进行交互。由于开发人员决定了他们的应用如何对特定意图使用react,因此以这种方式创建宏几乎是不可能的。

    使用 Root 电话:

  • 您可能要创建所有已安装应用程序的列表,可以使用
    getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
    

    检索所有已安装应用程序的列表。
  • 如果用户现在选择了一个应用程序,则可以通过意图启动它,并创建系统叠加层以获取所有触摸/按键事件(并让用户停止宏)。您可以找到一种方法here。存储触摸事件的x/y值。
  • 您可以使用 MotionEvent#obtain 重新创建事件
  • 现在出现了您需要 Root 电话的部分(权限INJECT_EVENTS)。启动应用程序,然后注入(inject)事件,以便执行宏。样例代码:
    Instrumentation m_Instrumentation = new Instrumentation();
    m_Instrumentation.sendPointerSync(motionEvent);
    

    您可以找到有关注入(inject)(还有keyevents)here的更多信息。
  • 如果您需要编译应用程序的帮助,则以下2个链接将为您提供帮助:How to compile Android Application with system permissionsAndroid INJECT_EVENTS permission
  • 关于android - 应用内的应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23869037/

    10-10 21:00
    查看更多