2013-04-17 56 views
5

假設我想開發一種以某種方式擴展的應用程序(讓我說「合作」)一個非常流行的應用程序我顯然沒有控制權。爲了簡單起見,我們還假設非常着名的應用程序作者不會發布更新以阻止我的應用程序。攔截來自外部應用程序的意圖

我研究了應用程序的功能,並確定它廣泛使用BroadcastReceiver s。我也知道,從清單來看,我可能會使用的常數是com.famousvendor.intent.INTENT_NAME

的問題很簡單:如果我創建一個應用程序,即org.zighinetto.tinyapp與意圖com.famousvendor.intent.INTENT_NAME的小應用程序捕獲廣播設置廣播接收器?或者這些廣播是否只能由觸發它們的過程接收?

+4

是的,你可以。 (另外,回答這個問題的一個快速方法是對它進行實際測試) – njzk2

+0

我在設計初期階段,所以如果我認爲做一個概念證明比詢問其他同行的經驗更長的工作,請給我道歉 –

回答

7

這個小應用程序會捕捉廣播嗎?或者這些廣播是否只能由觸發它們的過程接收?

有很多東西可以控制這個。

如果廣播是通過許可進行保護的,那麼除非您持有該許可,否則您將無法接收該廣播。您可能無法擁有該權限,具體取決於它的權限類型。另外,如果廣播是有序廣播,則較高優先級的應用將接收該廣播並可以中止它(消耗該事件,因此較低優先級的接收器不會獲得廣播)。優先級通過<intent-filter>(或IntentFilter)進行設置,並且您可能無法擁有比自己的應用更高的優先級,具體取決於原始開發人員擁有的優先級值。

還有其他僅限於本地的場景(例如LocalBroadcastManager),儘管您不會在清單中看到這些場景,所以我們可以假定它們不是在這裏使用的......今天。

爲了簡單起見,我們還假設非常着名的應用程序作者不會發布更新來阻止我的應用程序。

他們不需要特別阻止你的應用程序。他們只需要決定他們是否真的想要試用API,如果這是一個意外的API,他們可能會選擇鎖定它。例如,他們可能會這樣做,以響應a blog post by a balding guy

+0

I'毫無疑問會利用意外的API。感謝您的澄清。另外,當我說「阻止我的申請」時,我並不是指特定的區塊,而只是「阻止我[和其他人]利用他們的廣播的任何措施」,而且事實上也屬於這種情況 –

相關問題