2011-12-28 26 views
1

我想知道是否有任何方法以編程方式獲取應用程序(或組件)的身份(名稱),該應用程序(或組件)接收到我自己的應用程序發送的隱式意圖。應用程序接收隱式意圖的身份?

比方說,應用程序A發送隱含意圖與行動SEND-SMS。是否有可能讓A知道該行爲開始的應用程序?

非常感謝。

回答

3

如果您使用的是startActivity(),那麼沒有。

但是,這裏有一個解決辦法

  • 使用queryIntentActivities(),以確定哪些活動可以推出一個意圖。
  • 如果返回多個活動(且沒有設置isDefault),則顯示一個意向選擇器(例如,呼叫createChooser())。
  • 將該進程的顯式結果傳遞給startActivity()。

問題:我不相信一個定製的意向選擇器可以使一個活動成爲給定動作的「默認」。

+0

'resolveActivity()'只會返回一個結果。您可能想要'queryIntentActivities()',以獲得完整的候選人名單。 – CommonsWare

+0

啊,是的,馬克(@CommonsWare)是正確的。我誤解了文檔。 :)我已經更新了答案。 (謝謝!) –

+0

坦克爲快速回復。事實上,這正是我所期待的。這個想法是能夠根據它所擁有的權限的組合來選擇候選人中的一個(如果危險的權限組合則從候選人中排除)。主要目的是通過向惡意應用程序傳遞意圖避免發送可能導致安全漏洞的隱含意圖。再次感謝! – user1118463

相關問題