2016-08-02 122 views
0

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

+0

它可以,如果其他应用程序允许并明确公开此功能 –

+0

您正在寻找的内容通常称为ContentProvider。并非所有的应用程序都公开一个,尽管 –

+0

亲爱的@TimCastelijns我不知道我是否可以为YouTube,Netflix,Facebook和一些VoIP应用程序(如WhatsApp,Skype或Google Hangout)做到这一点 –

回答

1

不,大多没有

但是,正如Tim Castelijns所写的那样,如果“目标”应用程序允许它,就像通过内容提供者那样,它是可能的。

在植根设备上,经过长时间对目标应用程序进行逆向工程后,它也可以获得一些信息。也只能从根源设备。

其他情况下,您可以编写几个应用程序和设计,以便他们可以一起通信,如通过意图,内容提供商。

也有可能获得正在运行的应用(用户必须允许它)

+0

*还有可能获得正在运行的应用程序列表*使用哪些应用程序 –

+0

@TimCastelijns在用户上安装和/或运行的应用程序列表。有了stackoverflow应用程序,你是一个über怪胎,有200个应用程序?也意味着什么。有Tinder/grinder /无论什么?它说你的sx方向。 –

+0

这是一个相当浅的结论。无论如何,用户的个人利益与这个问题无关。 –

0

在其他的答案表明,你大多仅限于哪些应用将明确地向您提供的列表;实际上,设计良好的应用程序通常会试图防止“信息泄露”超出他们实际想要提供的范围。

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

1

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

为了使应用程序与其他应用程序的Android框架物资交流,多种机制从其他应用程序发送/接收数据到/:IntentsIPC (AIDL)Content Providers等等

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

这意味着如果应用程序没有实现公开其数据或内部工作的接口,则其他应用程序将无法访问该信息。请注意,某些应用程序选择将其数据保存在公共可用磁盘空间(即可拍摄照片的相机可能会将其保存在可供所有应用程序访问的SD卡上)。在这种情况下,如果你知道要寻找什么,你可以告诉某些应用程序。

此外,由于Android操作系统暴露出的一些全局设置,如状态:Device's connectivity stateBattery state,当前打开的蓝牙接口,running applicationslast executed apps等..

这些配置可能会让您对设备上正在发生的事情有个全面的了解。

相关问题