2016-08-02 154 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等..

這些配置可能會讓您對設備上正在發生的事情有個全面的瞭解。

相關問題