2015-03-13 56 views
3
Intent(String action, Uri uri) 
Create an intent with a given action and for a given data url. 

Intent(Context packageContext, Class<?> cls) 
Create an intent for a specific component. 

Intent(String action, Uri uri, Context packageContext, Class<?> cls) 
Create an intent for a specific component with a specified action and data. 

雖然對某些人來說可能很明顯,你們能否幫助我們那些很難「明白」的人?不同Intent構造函數的用途是什麼?

例如,在什麼情況下我需要1個其他的?

回答

6

有兩種類型的意圖的:

  • Explicit intents指定由名稱(完全合格的類名)啓動組件。您通常會使用明確的意圖在自己的應用程序中啓動組件,因爲您知道要啓動的活動或服務的類名稱。例如,爲響應用戶操作而啓動新的活動或啓動服務以在後臺下載文件。
  • Implicit intents沒有命名特定的組件,而是聲明瞭一個要執行的常規操作,它允許來自另一個應用程序的組件處理它。例如,如果要向用戶顯示地圖上的某個位置,則可以使用隱式意圖來請求另一個功能強大的應用程序在地圖上顯示指定的位置。

當您創建明確的啓動活動或服務的意圖時,系統立即啓動Intent對象中指定的應用程序組件。

當您創建隱式意圖時,Android系統通過將意圖內容與設備上其他應用程序的清單文件中聲明的意圖過濾器進行比較來找到適當的組件。如果意圖與意圖過濾器相匹配,則系統啓動該組件並將其傳遞給Intent對象。如果多個意圖過濾器兼容,系統會顯示一個對話框,以便用戶可以選擇要使用的應用程序。

閱讀更多:Intents and Intent Filters


現在回到你的問題,所有這三個constructures辦法創造隱性/明確的意圖。凡

  • Intent(String action, Uri uri)創建一個具有給定的動作和URI的implicit intent

  • Intent(Context packageContext, Class<?> cls)創建一個明確的意圖。

  • Intent(String action, Uri uri, Context packageContext, Class<?> cls)用給定的動作和uri創建一個明確的意圖。

+1

太棒了,如果我可以投票你不止一次,我會。簡單,清晰,信息豐富。再次感謝。 – 2015-03-13 06:33:02

+0

@SpaceGhost謝謝:) – 2015-03-13 06:34:15

2

與每當你想要做一些動作[Intent.ACTION_DIAL,Intent.ACTION_VIEW]中隱含的意圖的情況下,「行動」字符串意向次使用。指定一個廣播接收器來廣播一些消息。 -Intent(Context packageContext,Class cls)當您只想從現有活動中調用新活動時,您可以使用它。

1

情況1:請求要被執行的特定動作(稱爲impicit意圖), I.E.

Intent(INTENT.ACTION_DIAL,Uri.parse("555-555-5555")) 

以上撥打電話號碼,並在某些情況下,如果有可以執行的操作多個應用程序,它開闢了一個選擇器對話框,可以說:

完成與行動 撥號器 My_dialer

並等待用戶選擇。情況2:通過參考其名稱開始另一活動(明確的意圖) I.E.

 Intent(Context.this,ActivityToBeLaunched.class) 

案例3:它的前兩個的混合: 告訴lauched做一些活動的具體 I.E.

Intent(INTENT.ACTION_DIAL,Uri.parse("555-555-5555",Context.this,ActivityToBeLaunched.class)) 

希望這可以進一步加深你對Intents的理解!

相關問題