Android应用程序可以从其他应用程序获取信息吗?

时间:2016-08-02 13:56:06

标签: android

我是Android开发的新手。我开始知道 Intent和Intent过滤器可用于在应用程序之间共享数据,但我想知道是否有可能设计一个android应用程序,它可以在后台运行时从其他应用程序中提取一些特定信息。例如,如果用户正在使用whatsapp,它可能会知道掉话率,或者如果在YouTube,Facebook或Netflix的用户终端上播放视频,它将获得缓冲区播放时间,视频比特率等等。如果有,我将非常感激回答这个问题是一个例子。

3 个答案:

答案 0 :(得分:1)

不,大多数没有

然而,正如Tim Castelijns写的,如果'目标'应用程序允许它,例如通过内容提供商,它可能。

在根设备上,经过长时间的逆向工程目标应用程序后,也可以获得一些信息。仅来自root设备。

其他情况是你写了几个可以通过意图,内容提供商进行通信的应用和设计。

还可以获取正在运行的应用程序列表(用户必须允许)

答案 1 :(得分:1)

在Android中,每个应用程序都在自己的“sandbox”上运行,该应用程序应该与设备上运行的其他应用程序隔离开来。

为了让应用程序与其他应用程序通信,Android框架提供了几种向/从其他应用程序发送/接收数据的机制:IntentsIPC (AIDL)Content Providers等。 ..

每个想要将其数据暴露给设备上其他应用程序的应用程序都需要使用上述一种或多种机制来实现接口。

这意味着如果应用程序没有实现接口来公开其数据或内部工作,则其他应用程序将无法访问此信息。

请记住,某些应用程序选择将其部分数据保存在公共可用磁盘空间中(即拍摄照片的相机可能会将其保存在所有应用程序均可访问的SD卡上)。在这种情况下,如果你知道要寻找什么,你可以告诉某些应用程序的某些事情。

此外,Android操作系统会公开多个全局设置的状态,例如:Device's connectivity stateBattery state,当前打开的蓝牙接口,running applicationslast executed apps等。 ..

此配置可让您全面了解设备上发生的情况。

答案 2 :(得分:0)

如其他答案所示,您主要限于明确提供给您的应用程序;事实上,精心设计的应用程序通常会尝试防止“信息泄露”超出他们实际想要提供的内容。

其他一些人提到了内容提供商,但另一个需要考虑的构造是广播。如果应用在本地广播意图(即使用本地广播管理器),您将无法看到它,但如果他们使用“系统范围”广播或接收另一个“系统范围”广播,您可以收到同样的事件。