应用内的应用

问题描述 投票:12回答:4

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

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

这背后的想法是:

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

基本上,这样的事情:

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

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

android multitasking
4个回答
20
投票

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

有根电话:

  1. 您可能希望创建所有已安装应用的列表,您可以使用 getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA); 检索所有已安装应用的列表。
  2. 如果用户现在选择应用程序,则通过意图启动它并创建系统覆盖以获取所有触摸/键事件(并让用户停止宏)。你可以找到一种方法来做这个here。存储触摸事件的x / y值。
  3. 您可以使用MotionEvent#obtain重新创建事件。
  4. 现在来到你需要一个有根电话的部分(权限INJECT_EVENTS)。启动应用程序并注入事件,以便宏执行。 Samplecode: Instrumentation m_Instrumentation = new Instrumentation(); m_Instrumentation.sendPointerSync(motionEvent); 您可以找到有关注入(也是关键事件)here的更多信息。
  5. 如果您需要帮助来编译您的应用程序,这两个链接将帮助您:How to compile Android Application with system permissionsAndroid INJECT_EVENTS permission

3
投票

无法在View中启动应用程序,但您可以在应用程序中启动应用程序:

 Intent i = getPackageManager().getLaunchIntentForPackage("com.package.ofapp");
 startActivity(i);

//编辑您更新的问题:

从上面的代码开始活动后,您可以在新应用程序中随时启动/停止宏的一种方法是在屏幕顶部创建一个小视图覆盖。

此叠加层将位于所有活动之上。

看看以下链接:Creating a system overlay window (always on top)

您可以编写代码以在按下View时启动宏,然后如果按下按钮一次并且用户再次按下该按钮,则停止宏。这将是onTouchEvent()方法。


0
投票

是的,我认为这可能是一个名为浮动应用程序的应用程序(没有根)

仅使用一些adb命令

https://play.google.com/store/apps/details?id=com.lwi.android.flapps


-2
投票

是的,如果你使用Intents,它是可能的。它们允许您在屏幕之间移动并在同一个应用程序中启动另一个不同的功能。访问coursera获取更多关于意图的教程

© www.soinside.com 2019 - 2024. All rights reserved.